Reference
Command line
panto dispatches on its first argument. Some names are true subcommands (sessions, models, auth, bootstrap, update, lua, help); the flag forms start the agent itself, either interactively or in one-shot print mode.
| Command | Does |
|---|---|
| panto | Start a new interactive conversation in the current directory. |
| panto --resume [<id>] | Resume the most recent session, or a specific session by id prefix. |
| panto -c | Alias for bare --resume. |
| panto -p [prompt] | Run one non-interactive turn, print assistant text, exit 0/1. |
| panto sessions | List saved sessions for this directory. |
| panto models sync | Fetch models.dev and rebuild the base models.toml. |
| panto auth … | Show auth status, log in, or log out. |
| panto bootstrap [--force] | Prepare the bundled Lua / luarocks runtime and exit. |
| panto update | Install or refresh every rock listed in extensions.rocks. |
| panto lua [args…] | Run the embedded Lua interpreter. |
| panto --version | Print the panto version. |
Starting a session
Interactive mode requires a tty on stdin and stdout. Print mode does not: the prompt can come from the flag argument or from piped stdin, and the command prints only the assistant text before exiting.
--resume.models.toml knobs and [defaults] reasoning.Unknown arguments are errors now
Agent-mode flag parsing is strict. An unrecognized argument prints an error and exits instead of being ignored.panto sessions
Sessions are stored per working directory. The listing is newest-modified first and prints the shortest unambiguous id prefix, the modified timestamp, message count, model, and last user message:
If there are no sessions yet, panto prints no sessions for <cwd> and then the directory it would use.
panto models
models.toml.The sync command looks at the providers that resolved from your layered config, maps each one to a models.dev catalog entry, optionally intersects that with the provider's own live /models listing, and writes the result to the base-layer models.toml at $XDG_DATA_HOME/panto/models.toml (or ~/.local/share/panto/models.toml).
Your user and project models.toml layers still sit on top and win.
panto auth
With no action, panto auth defaults to status.
panto bootstrap
Bootstrap stages the base agent tree, creates the generated base config as needed, and prepares the versioned luarocks tree under the data home. The normal agent startup path runs the same bootstrap automatically.
extensions.rocks.panto update is the explicit “go hit luarocks again” command. Startup only installs missing rocks; changing a version pin or forcing a re-resolve is what update is for.
panto lua
This is the same embedded Lua build panto uses internally, with package paths and luarocks configured the same way a session sees them. It is handy both for experiments and for driving luarocks manually:
panto lua my-script.lua
panto lua -e 'arg[0]="luarocks"; require("luarocks.cmd").run_command("install","lpeg")'Slash commands
Lines beginning with / are handled locally inside the TUI and never sent to the model.
/help, /quit, /model, /reasoning, /new, /resume, /status, and /compact.panto.ext.register_command.Environment
| Variable | Effect |
|---|---|
| ANTHROPIC_API_KEY | Consumed by the default Anthropic provider. |
| OPENAI_API_KEY | Consumed by the default OpenAI provider. |
| PANTO_DEBUG | When non-zero, route std.log output to <data home>/debug/<session>.log instead of the terminal. |
| PANTO_SESSION_DIR | Override the base sessions directory. panto still appends one encoded subdirectory per working directory. |
| XDG_CONFIG_HOME | Locates the user config and user extensions directories. |
| XDG_DATA_HOME | Locates the data home: base config, base models, sessions, auth cache, agent tree, and rocks. |