Start the local Console
The open-source Console is a single-user local application. It includes the operator UI, API, migrations, and persistent SQLite storage in one Python package.
actionrail-console
The launcher:
- creates the data directory if it does not exist;
- applies database migrations;
- listens only on
127.0.0.1; - opens
http://127.0.0.1:8020in the default browser.
No users, organizations, authentication flow, or sign-up are required for this local distribution.
Command options
actionrail-console --port 8020 --data-dir ~/.actionrail --no-open
| Option | Default | Purpose |
|---|---|---|
--port | 8020 | Change the local HTTP port. |
--data-dir | ~/.actionrail | Choose where Console data and its generated secret key persist. |
--no-open | off | Start without opening a browser. |
--version | — | Print the installed Console version. |
The process prints the resolved data directory and Console URL at startup. Press Ctrl+C for a normal shutdown.
What the Console manages
- Agents — registered runtime identities, enforcement mode, coverage, and health;
- Rules — policy and grounding configuration attached to tool arguments;
- Sources — configured verification endpoints using SQLite, Postgres, MySQL, HTTP, or MCP adapters;
- Activity — privacy-aware allow, hold, and block reports;
- Reviews — human decisions for held actions;
- Settings — local appearance and Console information.
The Console is not in the path of Source queries or tool execution. The SDK connects to Sources directly from the agent process.
The open-source Console binds to localhost and assumes the person with access to the machine is trusted. It is not a multi-user hosted deployment. Do not expose it directly to an untrusted network.
Persistent state
The default data directory is ~/.actionrail. Reusing that directory preserves agents, hashed agent keys, rules, Source metadata, decisions, and reviews between restarts.
Source secrets should appear only as references such as ${env:BILLING_DB_PASSWORD}. The environment variable resolves inside the SDK process; the credential value must not be stored in the Console.
Next, guard an operation with the direct Python runtime, or run the packaged LangGraph quickstart to register an agent and see a blocked action in Activity.