{"repo":"frappe/frappectl","free":true,"listed":false,"github":"https://github.com/frappe/frappectl","clone":"git clone https://github.com/frappe/frappectl.git","description":"Dumb CLI for smart agents","language":"Python","stars":34,"topics":["agent","automation","cli","frappe-framework"],"license":"MIT","category":"cli-tools","readme_excerpt":"frappectl A command-line REST API v2 client for Frappe v16+ — built for humans and AI agents. Using an agent? Start with frappectl guide . It fits site selection, core verbs, filtering and the raw-API escape hatch on one screen. Install This installs two commands: frappectl and its short alias fr . Authentication frappectl supports 3 authentication paths. Environment variables Environment variables always win and never touch the keyring. Stored profiles Generate an API key + secret from User → Settings → API Access , then log in: The site URL lives in /.config/frappe/config.json ; the secret lives in the OS keyring . There is no plaintext fallback. If the machine has no keyring, use environment variables. OAuth Interactive login selects OAuth by default. It stores no secret; short-lived access tokens refresh automatically. Sites with dynamic client registration create the client automatically. Frappe v15+ supports this by default; other sites need a pre-registered public --client-id . OAuth needs a terminal and local browser, so it isn't the headless path. Use --oauth to skip the authentication-method prompt. Read-only profiles A new profile is read-only by default and refuses every unsafe HTTP method before the request leaves your machine . This removes the obvious production footgun: an exploratory command can't accidentally mutate the site. Choose --writable during login to opt out. This blocks doc create/update/delete/submit , file upload , and method calls through api / ","default_branch":null,"files":null,"tree":[],"storefront":"/r/frappe","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/frappe/frappectl/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}