Introduction
appctl gives an LLM a controlled set of tools for your existing application.
It reads an app surface you already have, writes a local tool contract, executes
the tool calls the model requests, and records what happened.
The source can be an OpenAPI document, framework project, SQL
information_schema, Supabase/PostgREST service, MCP server, URL login flow, or
plugin. The generated files live under .appctl/, so the contract can be
reviewed before the agent uses it.
At runtime, appctl sends your prompt to the configured model provider. If the
model asks to call a tool, appctl performs the HTTP, SQL, MCP, or plugin-backed
operation using your configured auth and safety settings. Call history is stored
locally, for example in .appctl/history.db.
When to use it
Section titled “When to use it”Use appctl when you want to operate or inspect a real backend from natural language without writing a custom agent bridge first. Typical use cases include internal admin workflows, support operations, reporting, QA checks, demo apps, and local developer tools.
Primary commands
Section titled “Primary commands”Start with appctl setup if you want the guided path.
appctl setup— provider, sync source, checks, and next steps in one flow.appctl sync— generate the schema and tools from one selected source. If.appctl/schema.jsonalready exists,--forceis required to replace it.appctl chatorappctl run— send user text; the model may emit tool calls whichappctlexecutes.appctl serve— expose HTTP/WebSocket and the embedded web console.
What appctl is not
Section titled “What appctl is not”- A web framework: your application is unchanged;
appctlonly consumes what it can read. - A database: data remains in your systems.
- An LLM product: you configure providers in
config.toml.
Sync sources (summary)
Section titled “Sync sources (summary)”Not sure which flag to use? Start with Choosing a sync source (Nest, Spring, Next.js, and other stacks without a built-in flag).
| Source | Documentation |
|---|---|
| OpenAPI | OpenAPI |
| Django (DRF), Flask | Django, appctl sync --flask |
| Rails, Laravel, ASP.NET, Strapi | Rails, Laravel, ASP.NET, Strapi |
| Supabase / PostgREST | Supabase |
| SQL and other datastores | Databases |
| URL + login | URL login |
| MCP | MCP |
| Dynamic plugins | Plugins |
See also
Section titled “See also”- Installation
- First 10 minutes
- Quickstart
- Mental model
- Copy-to-clipboard setup prompt for your AI (project homepage)