CLI & Reference
Aura Workshop ships a small set of command-line entry points — the headless
aura-daemon server and a few native helper sidecars — plus the fixed
conventions everything else depends on: network ports, on-disk data locations, the SQLite
schema, and license tiers. This page is the quick-reference index for Aura Workshop 1.36.2,
closing with a troubleshooting and FAQ section.
aura-inference sidecar and inference-master /
inference-worker daemon modes for a LAN GPU cluster. Local model inference has
been removed — those binaries, modes, and their ports (18801, 50052) no longer exist, and
there is no separate aura-cli TUI. To use a local model, run any
OpenAI-compatible server (Ollama, LM Studio, vLLM) and add it as a custom provider — see
Models & Providers.
aura-daemon CLI
The headless server binary. It is bundled with the desktop app as a sidecar and shipped as
the ENTRYPOINT of the Docker daemon image (coolkoo/aura-workshop:daemon-latest).
The desktop app itself is launched from the OS launcher and parses no CLI flags — its
embedded web server is configured through in-app settings.
Flags
Only two flags are parsed:
aura-daemon [OPTIONS]
OPTIONS:
--port <PORT> Override the web server port (default: settings.web_server_port, else 18800)
--mode <MODE> full (default) | worker
The daemon runs a single full mode. worker is a
backward-compatible alias of full; any other --mode value
(including the retired inference-master / inference-worker) prints
a notice and falls back to full. The resolved mode is exported as
AURA_DAEMON_MODE for the health endpoint.
What full mode starts
- Web server (always) on the resolved port — serves the REST API, SSE, WebSockets, and either the full frontend or the viewer SPA.
- Deployed scheduler loop every 60 s for tasks with
background_deploy = 1, plus autonomous[loop:]re-wakes. - MCP auto-connect for enabled servers (30 s timeout each).
- Deployed listeners auto-start; the webhook server (port 18790) starts only when at least one webhook is deployed.
- Workflow engine — retry poller, resume listener, and startup recovery of running/waiting runs.
- ACP discovery (UDP 18802 listener + broadcast), license validate with a 24 h re-check, and a heartbeat push every 30 s if
AURA_HEARTBEAT_URLis set. - Docker auto-detect — if Docker isn't available the daemon flips
native_modeon so bash tools run natively. On boot, any task leftrunningfrom a prior process is markedinterrupted.
Environment variables
| Variable | Read by | Effect |
|---|---|---|
AURA_WEB_TOKEN | web server + heartbeat | Bearer token for /api/* (wins over the DB setting) |
AURA_VIEWER_MODE | web server | Serve the viewer SPA instead of the full frontend |
AURA_REMOTE_DEPLOYMENT | web server / auth | Serve viewer SPA and enforce strict auth (reject anonymous even with no token) |
AURA_LICENSE_KEY | startup | Seed the license key into settings if changed |
AURA_API_KEY | startup | Override the provider API key in settings |
AURA_MODEL | startup | Override the selected model (provider inferred from the name) |
AURA_BASE_URL | startup | Override the provider base URL |
AURA_HEARTBEAT_URL | heartbeat loop | POST status here every 30 s |
AURA_DEPLOYMENT_ID | heartbeat loop | Included in the heartbeat payload |
AURA_DB_PATH | Docker image | SQLite path (/data/aura-workshop.db in the image) |
AURA_DAEMON_MODE | health endpoint | Set by the daemon to the resolved mode |
The AURA_API_KEY / AURA_MODEL / AURA_BASE_URL block
exists because the deploy path sets these on the docker run command — without
it a fresh container would run against the default preset with nothing listening. Empty
values are ignored, so re-running the daemon without re-passing every variable doesn't wipe
settings.
Examples
# Full daemon on the default port, with bearer auth and a cloud provider
AURA_WEB_TOKEN=$(uuidgen) \
AURA_API_KEY=sk-... AURA_MODEL=deepseek-chat AURA_BASE_URL=https://api.deepseek.com \
aura-daemon
# Override the web port
aura-daemon --port 9000
# Strict remote deployment serving the viewer SPA
AURA_WEB_TOKEN=... AURA_REMOTE_DEPLOYMENT=true aura-daemon
Docker CLI flags (daemon image)
| Flag | Why |
|---|---|
--name aura-daemon | Stable name for docker logs / docker stop |
--restart=unless-stopped | Auto-restart on host reboot |
--net=host | Required for ACP peer discovery (UDP 18802) |
-p 18800:18800 | Web UI / REST / SSE / WS / ACP REST |
-p 18790:18790 | Webhooks |
-v aura-data:/data | Persist SQLite + memory |
-e AURA_WEB_TOKEN=... | Bearer token |
-e AURA_REMOTE_DEPLOYMENT=true | Strict auth + viewer SPA |
For remote agent deployments, prefer the deploy_remote tool over a hand-rolled
docker run. See Deployment &
Security.
Command-line diagnostics
# Health (public)
curl http://localhost:18800/api/health
# Full diagnostics (auth)
curl http://localhost:18800/api/diagnostics -H "Authorization: Bearer $TOKEN" | jq
# Prometheus metrics
curl http://localhost:18800/api/metrics -H "Authorization: Bearer $TOKEN"
# OpenAPI spec
curl http://localhost:18800/api/openapi.json -H "Authorization: Bearer $TOKEN" | jq
Native helper sidecars
Alongside aura-daemon, the desktop build bundles a few small native binaries
that back specific tools. They aren't invoked directly in normal use — the agent runtime
calls them.
| Sidecar | Platform | Purpose |
|---|---|---|
aura-ocr | all | OCR sidecar invoked when a non-vision model needs to read text in an image. Backends: macOS Vision.framework, Windows Windows.Media.Ocr, Linux statically-linked Tesseract. Usage: aura-ocr <input> [<output>]. |
aura-a11y | macOS | Accessibility helper (Swift) backing the native_app / a11y automation tools. |
aura-uia | Windows | UIAutomation helper backing the same automation tools on Windows. |
There is no aura-inference sidecar and no aura-cli TUI — both were
removed with local model inference.
Network ports
These are the ports Aura Workshop itself binds:
| Port | Protocol | Service | Notes |
|---|---|---|---|
| 18800 | TCP | Web UI + REST + SSE + WS + ACP REST | The main application port. Serves the frontend (or viewer SPA), all REST endpoints, Server-Sent Events, WebSockets, and the /.well-known + /acp/* routes. |
| 18790 | TCP | Webhook receiver | Inbound webhook payloads. On the daemon this starts only when a webhook is deployed. |
| 18802 | UDP | ACP peer discovery | Broadcast/listen for other Aura instances on the LAN. Configurable via acp_discovery_port; Docker deployments need --net=host. |
| 1420 | TCP | Vite dev server | Development only — the hot-reload frontend under npm run tauri dev. |
11434) or LM Studio run on
their own ports, on your machine or network — Aura connects to them as a custom
provider. Aura does not bind or manage those ports, and there is no longer any inference
discovery (18801) or distributed-inference RPC (50052) port.
Data storage locations
Aura Workshop keeps a single SQLite database plus a handful of file-based directories. The database path is platform-specific:
| Data | Location |
|---|---|
| Database (macOS) | ~/Library/Application Support/aura-workshop/aura-workshop.db |
| Database (Linux) | ~/.local/share/aura-workshop/aura-workshop.db |
| Database (Windows) | %APPDATA%\aura-workshop\aura-workshop.db |
| Database (Docker) | /data/aura-workshop.db |
| User memory (markdown) | ~/.aura/memory/ |
| Project memory | .aura/memory/ (relative to the project root) |
| User skills / project skills | ~/.aura/skills/ · .aura/skills/ |
| Project instructions | AURA.md or CLAUDE.md (in the project root) |
| Listener runtimes | ~/.local/share/aura-workshop/listener-env/<platform>/ |
| Schedule run logs | ~/.local/share/aura-workshop/schedule-logs/<task_id>/ |
| Per-task MCP data | ~/.aura-workshop/mcp-data/<task_id>/<server_id>/ |
The database runs in WAL (Write-Ahead Logging) mode — concurrent reads with a single writer. Credentials and OAuth tokens are stored encrypted (AES-256-GCM).
Database
A single SQLite database holds all application state — 63 base tables plus
6 FTS5 full-text indexes. The schema is created and migrated automatically
on launch (CREATE TABLE IF NOT EXISTS plus idempotent
ALTER TABLE … ADD COLUMN blocks), so no manual migration step is ever required.
The tables group into these domains:
| Domain | Representative tables |
|---|---|
| Chat & tasks | conversations, messages, tasks, task_messages, task_memory, task_checkpoints, projects |
| Memory & knowledge | memory_facts, concept_nodes/concept_edges, code_symbols/code_edges, wiki_pages, semantic_cache |
| Providers & routing | custom_providers, provider_models_cache, provider_pricing, routing_decisions, routing_rules, token_usage, spend_limits, provider_fallback_order |
| Subscriptions & licensing | subscription_plans, subscription_usage, license_cache, usage_metric_batches |
| Automation | scheduled_tasks, schedule_run_logs, listeners, listener_event_logs, im_bindings, webhooks, webhook_logs, slash_commands |
| Workflows & teams | automation_workflows, workflow_runs, workflow_run_steps, workflow_approval_requests, teams |
| Integrations | connections, composio_auth_configs, composio_usage, cloud_connectors, mcp_servers, plugins, credentials, credential_pool |
| Agents & deployment | acp_agents, remote_deployments, skill_settings |
| Full-text search (FTS5) | tasks_fts, task_messages_fts, memory_facts_fts and companions, maintained by AFTER-INSERT/UPDATE/DELETE triggers |
For the full entity-relationship model, see the architecture reference in the repository documentation.
License tiers
Aura Workshop runs fully in its base tier with no license key. Entering a key in Settings → Security unlocks higher tiers; features for the new tier become available immediately without a restart.
| Tier | Adds |
|---|---|
| Community | Single-agent tasks, all built-in agent tools and bundled skills, the full task modes (Execute, Plan, Goal, Auto), basic automation (schedules, listeners, webhooks), any connected provider — including local OpenAI-compatible servers — and web-UI access. |
| Professional | Everything in Community plus multi-agent teams, Aura Routing 2.0, the full set of chat-listener platforms, and spend tracking with limits. |
| Business | Everything in Professional plus the visual workflow editor, remote agent deployment, and advanced merge strategies. |
| Enterprise | Everything in Business plus credential pools, portal-managed governance, priority support, and SLA options. |
Managed devices can also receive their tier and policy from the Enterprise Portal — enrollment sets the org and syncs spend limits and routing rules locally. Feature availability by tier is subject to change; the product pages carry current commercial terms.
Troubleshooting & FAQ
Most issues follow a symptom → where to look shape. Start here, then check the relevant settings or REST route.
| Symptom | Where to look |
|---|---|
| UI shows nothing while the agent works | Confirm data is reaching the DB (task_messages); if it is, the SSE / IPC bridge is the break. Browser test: curl -N http://localhost:18800/api/events -H "Authorization: Bearer $TOKEN". |
| Agent hangs or repeats the same tool | The loop detector warns at 3 identical calls and hard-stops at 6. Cancel with POST /api/inference/stop { "task_id": … }. |
| Wrong provider / model answered | A pinned model never silently switches. Check GET /api/routing/stats and the routing_decisions table (Routing Debug Log) for why a tier fired. |
| Bash ran on the host despite Docker mode | The native_mode settings-load fallback is insecure-open — a failed settings load flips you to native. Confirm GET /api/settings and check startup logs for [settings] errors. |
| Context exploded / API rejects request | Compaction triggers at 70% of the model's window. If it still rejects, an orphaned tool pair slipped the sanitizer — inspect the built request. Try a larger-context model. |
| MCP "Broken pipe" | The stdio client keeps a 50-line stderr tail on the error — usually a Python traceback or a binary not on PATH. Reconnect after fixing the dependency. |
| ACP peer not visible | Discovered peers default to enabled=0. Confirm broadcasts cross (udp port 18802), then toggle the peer on in Settings → ACP Agents. Only enabled + healthy peers are routable. |
Workflow stuck in running | Check GET /api/workflow/runs/{id}. Restart the daemon to trigger startup recovery and the retry poller. |
| Schedule double-fires | A pre-claim CAS on next_run_at guards competing daemons — doubles usually mean two loops or clock skew; inspect schedule_run_logs. |
| Daemon returns 401 with a token | Bearer comes from AURA_WEB_TOKEN (env wins) or the DB setting. In strict remote mode, anonymous /api/* is rejected even with no token configured. |
| Diagram renders as raw code | PlantUML renders server-side via the bundled JRE. Install the JRE dependency (Settings → Dependencies). |
| Image text not read | OCR falls back via the aura-ocr sidecar for non-vision models — confirm the binary is present for this platform. |
| Gatekeeper warning on a shipped DMG | Almost always a DMG that wasn't notarized. Only official signed builds are Gatekeeper-valid: xcrun stapler validate should print "The validate action worked!". |
macOS quarantine prevents launch
macOS may quarantine a freshly-installed app ("… cannot be opened because it is from an unidentified developer"). Clear the attribute, then relaunch:
xattr -cr "/Applications/Aura Workshop.app"
Useful queries
-- Running tasks (including autonomous)
SELECT id, title, status, task_mode FROM tasks WHERE status = 'running';
-- Armed autonomous loops
SELECT id, next_run_at, enabled FROM scheduled_tasks WHERE id LIKE 'loop-%';
-- Recent token usage
SELECT provider, model, SUM(input_tokens + output_tokens) AS tokens, SUM(cost_usd) AS cost
FROM token_usage WHERE created_at > datetime('now', '-24 hours')
GROUP BY provider, model ORDER BY cost DESC;
-- ACP peers discovered but not admitted
SELECT peer_id, agent_name, source, enabled, health FROM acp_agents WHERE enabled = 0;
Frequently asked
My agent doesn't remember things across tasks. Is memory broken?
Usually not. memory_enabled may be on but embeddings are off by default, so
recall is lexical only — a differently-worded query won't match. Team-scoped facts also need
a matching active_team_id. See Memory
& Knowledge.
The knowledge graph is empty even after days of use.
The concept graph and code graph are built on demand
(POST /api/concept-graph/build, POST /api/codegraph/scan), not
passively.
Can I run Aura Workshop fully offline?
Yes — point it at a local OpenAI-compatible server (Ollama, LM Studio, vLLM) as a custom
provider. All data stays on your machine; no cloud provider is required.
Where do I see why the router picked a model?
GET /api/routing/stats for the tier, and the routing_decisions
table (Routing Debug Log UI) for the full per-request record.
Diagnostics & bug reports
GET /api/diagnostics returns provider connectivity, MCP statuses, daemon status,
disk, and recent errors. Help → Generate bug report (or
POST /api/generate-bug-report) bundles the app version, platform info, recent
logs, a secrets-redacted settings snapshot, and diagnostics — email it to
[email protected].