al new <name>
Creates a new Action Llama project. Runs interactive setup to configure credentials and LLM defaults.
my-project/package.json— with@action-llama/action-llamadependencymy-project/.gitignoremy-project/.workspace/— runtime state directory- Credential files in
~/.action-llama/credentials/
al doctor
Checks all agent credentials and interactively prompts for any that are missing. Discovers agents in the project, collects their credential requirements (plus any webhook secret credentials), and ensures each one exists on disk. Also generates a gateway API key if one doesn’t exist yet (used for dashboard and CLI authentication).
Additionally validates:
- Webhook trigger field configurations (misspelled fields, wrong types)
- Host-user runtime setup (OS user existence, sudoers configuration). On Linux, auto-creates users and sudoers rules. On macOS, prints manual setup instructions.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment name — pushes credentials to server and reconciles IAM |
--strict | Treat unknown config fields as errors instead of warnings |
al run <agent>
Manually triggers a single agent run. The agent runs once and the process exits when it completes. Useful for testing, debugging, or one-off runs without starting the full scheduler.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment name |
-H, --headless | Non-interactive mode (no TUI, no credential prompts) |
al start
Starts the scheduler. Runs all agents on their configured schedules and listens for webhooks.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment name |
-w, --web-ui | Enable web dashboard (see Web Dashboard) |
-e, --expose | Bind gateway to 0.0.0.0 (public) while keeping local-mode features |
-H, --headless | Non-interactive mode (no TUI, no credential prompts) |
--port <number> | Gateway port (overrides [gateway].port in config) |
al stop
Stops the scheduler and clears all pending agent work queues. Sends a stop signal to the gateway. In-flight runs continue until they finish, but no new runs will start.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment name |
al stat
Shows status of all discovered agents in the project. Displays each agent’s schedule, credentials, webhook configuration, and queue depth.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment name |
al logs [agent]
View log files for a specific agent, or scheduler logs if no agent is specified.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment name |
-n, --lines <N> | Number of log entries (default: 50) |
-f, --follow | Tail mode — watch for new entries |
-d, --date <YYYY-MM-DD> | View a specific date’s log file |
-r, --raw | Raw JSON log output (no formatting) |
-i, --instance <id> | Filter to a specific instance ID |
Troubleshooting logs
al stats [agent]
Show historical run statistics from the local SQLite stats database. Without an agent name, shows a global summary across all agents. With an agent name, shows detailed per-run history.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-s, --since <duration> | Time window: e.g. 24h, 7d, 30d (default: 7d) |
-n <N> | Number of recent runs to show (default: 20) |
--json | Output as JSON |
--calls | Show agent-to-agent call graph summary instead of run history |
al pause [name]
Pause the scheduler or a single agent. Without a name, pauses the entire scheduler — all cron jobs stop firing. With a name, pauses that agent — its cron job stops firing and webhook events are ignored. In-flight runs continue until they finish. Requires the gateway.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment name |
al resume [name]
Resume the scheduler or a single agent. Without a name, resumes the entire scheduler. With a name, resumes that agent — its cron job resumes firing and webhooks are accepted again.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment name |
al kill <target>
Kill an agent (all running instances) or a single instance by ID. Tries the target as an agent name first; if not found, falls back to instance ID. This does not pause the agent — if it has a schedule, a new run will start at the next cron tick. To fully stop an agent, pause it first, then kill.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment name |
al chat [agent]
Open an interactive console. Without an agent name, opens the project-level console for creating and managing agents. With an agent name, opens an interactive session scoped to that agent’s environment — credentials are loaded and injected as environment variables (e.g. GITHUB_TOKEN, GIT_SSH_COMMAND), and the working directory is set to the agent’s directory.
| Option | Description |
|---|---|
[agent] | Agent name — loads its credentials and environment |
-p, --project <dir> | Project directory (default: .) |
al push [agent]
Deploy your project to a server over SSH. Requires a [server] section in your environment file. See VPS Deployment for how it works under the hood.
| Option | Description |
|---|---|
[agent] | Agent name — push only this agent (hot-reloaded, no restart) |
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment with [server] config |
--dry-run | Show what would be synced without making changes |
--no-creds | Skip credential sync |
--creds-only | Sync only credentials (skip project files) |
--files-only | Sync only project files (skip credentials) |
-a, --all | Sync project files, credentials, and restart service |
--force-install | Force npm install even if dependencies appear unchanged |
Environment Commands
al env init <name>
Create a new environment configuration file at ~/.action-llama/environments/<name>.toml.
| Option | Description |
|---|---|
--type <type> | Environment type: server |
al env list
List all configured environments.
al env show <name>
Display the contents of an environment configuration file.
al env set [name]
Bind the current project to an environment by writing the environment name to .env.toml. Omit the name to unbind.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
al env check <name>
Verify that an environment is provisioned and configured correctly. Checks SSH connectivity, Docker availability, and server readiness.
al env prov [name]
Provision a new VPS and save it as an environment. Supports Vultr and Hetzner. If the name is omitted, you’ll be prompted for one. See Deploying to a VPS for a walkthrough.
al env deprov <name>
Tear down a provisioned environment. Stops containers, cleans up remote credentials, optionally deletes DNS records, and optionally deletes the VPS instance if it was provisioned via al env prov.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
al env logs [name]
View server system logs (systemd journal) via SSH. If the name is omitted, uses the project’s bound environment.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-n, --lines <N> | Number of log lines (default: 50) |
-f, --follow | Tail mode — watch for new entries |
Credential Commands
al creds ls
Lists all stored credentials grouped by type, showing field names but not values.
al creds add <ref>
Add or update a credential. Runs the interactive prompter with validation for the credential type.
<ref> format is type or type:instance. If no instance is specified, defaults to default. If the credential already exists, you’ll be prompted to update it.
al creds rm <ref>
Remove a credential from disk.
al creds types
Browse available credential types interactively. Presents a searchable list of all built-in credential types. On selection, shows the credential’s fields, environment variables, and agent context, then offers to add it immediately.
Agent Commands
al agent new
Interactive wizard to create a new agent from a template. Prompts for agent type (dev, reviewer, devops, or custom), agent name, and then runs al agent config to configure the new agent.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
al agent config <name>
Interactively configure an existing agent. Opens a menu to edit each section of the agent’s config.toml: credentials, model, schedule, webhooks, and params. Saves changes to agents/<name>/config.toml and runs al doctor on completion to validate the configuration.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
Skill Management
al add <repo>
Install a skill from a git repository. Clones the repo, discovers SKILL.md files (at the root or under skills/*/), copies the skill into agents/<name>/, creates a config.toml with a source field pointing back to the repo, and runs al config for interactive setup.
Accepts GitHub shorthand (author/repo) or a full git URL.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-s, --skill <name> | Skill name (if the repo contains multiple skills) |
al config <name>
Shortcut for al agent config <name>. Interactively configure an agent’s runtime settings in config.toml.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
al update [agent]
Update installed skills from their source repos. For each agent with a source field in its config.toml, clones the source repo, compares the upstream SKILL.md with the local copy, and prompts to accept changes. Only updates SKILL.md — config.toml is never touched.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
Webhook Commands
al webhook replay <fixture>
Load a webhook fixture file (JSON) and test which agents would match. Useful for debugging webhook configurations without sending real webhooks. The fixture file must have headers and body properties.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-r, --run | Interactively run a matched agent after simulation |
-s, --source <name> | Webhook source name from config.toml (auto-detected from headers if omitted) |
MCP Commands
al mcp serve
Starts the MCP stdio server for Claude Code integration. Claude Code spawns this as a subprocess — you don’t typically run it directly. See Claude Integration for setup and usage.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment name |
al mcp init
Writes or updates .mcp.json in the project root so Claude Code auto-discovers the MCP server.
| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
Global Options
These options are available on most commands:| Option | Description |
|---|---|
-p, --project <dir> | Project directory (default: .) |
-E, --env <name> | Environment name (also AL_ENV env var or environment field in .env.toml) |