Charter is a CLI-first API runtime. You define resources, fields, and validation rules once. Charter generates the REST API, an OpenAPI spec, human-readable docs, roles, and permissions from that definition. The same binary runs local development and production.
Product: https://www.snaapi.co/products/charter
brew tap snaapi/charter
brew install --cask charterThe cask installs the charter binary for macOS (Apple silicon and Intel) and Linux. Each install downloads its tarball from downloads.chartermcp.com. Homebrew checks the checksum. macOS binaries are signed with a Developer ID Application certificate and notarized by Apple.
brew upgrade --cask chartercharter setup --yes
charter devcharter setup --yes writes a local .env that uses SQLite. charter dev listens on http://127.0.0.1:3000, seeds a local admin, and prints a curl example. Postgres is the production database: set DATABASE_URL when you want it.
charter setup also prints the command that registers the MCP server with an agent CLI it finds on PATH.
- REST from one definition. Creating a resource creates its table and full CRUD. Field types include string, text, number, boolean, datetime, timestamp, json, uuid, enum, and relation. Validation is enforced per role.
- OpenAPI. JSON and YAML, generated from the same definition as the API.
- Access control. Role-based permissions, field-level security, and row-level security. Fields such as
owner_idcan be filled from the request. API keys are stored hashed and can expire. - Registry. Fields are reusable across resources. Soft-delete rows, or disable a resource without dropping its data. Import and export the config as YAML or TOML. Import records from CSV or Excel.
- Events and webhooks. Create, update, replace, and delete emit a lifecycle event with before/after state and the actor. Subscriptions match wildcards (
*,posts.*,*.created) and retry with backoff. - Background jobs. Pattern routing, retry, and a lock so a job does not run twice at once.
- MCP. An MCP server is built in. Resources, fields, webhooks, and users are the same operations on the CLI.
- OpenTelemetry. Endpoints, resources, errors, slow queries, and per-field validation failures, without extra instrumentation.
- One binary. The release build is under 10 MB. A container is optional.
The docs are served by the running binary, from the same registry as the API. After charter dev on the default port:
- Docs: http://127.0.0.1:3000/docs
- OpenAPI JSON: http://127.0.0.1:3000/openapi.json
- OpenAPI YAML: http://127.0.0.1:3000/openapi.yaml
- LLM index: http://127.0.0.1:3000/llms.txt
- Full LLM reference: http://127.0.0.1:3000/llms-full.txt
charter dev prints these URLs in its startup banner. A different --port changes the host in each link.
Product overview: https://www.snaapi.co/products/charter
Report a vulnerability to jason@snaapi.co.