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.

No local-inference CLI, no TUI. Earlier builds shipped an 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_URL is set.
  • Docker auto-detect — if Docker isn't available the daemon flips native_mode on so bash tools run natively. On boot, any task left running from a prior process is marked interrupted.

Environment variables

VariableRead byEffect
AURA_WEB_TOKENweb server + heartbeatBearer token for /api/* (wins over the DB setting)
AURA_VIEWER_MODEweb serverServe the viewer SPA instead of the full frontend
AURA_REMOTE_DEPLOYMENTweb server / authServe viewer SPA and enforce strict auth (reject anonymous even with no token)
AURA_LICENSE_KEYstartupSeed the license key into settings if changed
AURA_API_KEYstartupOverride the provider API key in settings
AURA_MODELstartupOverride the selected model (provider inferred from the name)
AURA_BASE_URLstartupOverride the provider base URL
AURA_HEARTBEAT_URLheartbeat loopPOST status here every 30 s
AURA_DEPLOYMENT_IDheartbeat loopIncluded in the heartbeat payload
AURA_DB_PATHDocker imageSQLite path (/data/aura-workshop.db in the image)
AURA_DAEMON_MODEhealth endpointSet 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)

FlagWhy
--name aura-daemonStable name for docker logs / docker stop
--restart=unless-stoppedAuto-restart on host reboot
--net=hostRequired for ACP peer discovery (UDP 18802)
-p 18800:18800Web UI / REST / SSE / WS / ACP REST
-p 18790:18790Webhooks
-v aura-data:/dataPersist SQLite + memory
-e AURA_WEB_TOKEN=...Bearer token
-e AURA_REMOTE_DEPLOYMENT=trueStrict 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.

SidecarPlatformPurpose
aura-ocrallOCR 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-a11ymacOSAccessibility helper (Swift) backing the native_app / a11y automation tools.
aura-uiaWindowsUIAutomation 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:

PortProtocolServiceNotes
18800TCPWeb UI + REST + SSE + WS + ACP RESTThe main application port. Serves the frontend (or viewer SPA), all REST endpoints, Server-Sent Events, WebSockets, and the /.well-known + /acp/* routes.
18790TCPWebhook receiverInbound webhook payloads. On the daemon this starts only when a webhook is deployed.
18802UDPACP peer discoveryBroadcast/listen for other Aura instances on the LAN. Configurable via acp_discovery_port; Docker deployments need --net=host.
1420TCPVite dev serverDevelopment only — the hot-reload frontend under npm run tauri dev.
Local model servers such as Ollama (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:

DataLocation
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 instructionsAURA.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:

DomainRepresentative tables
Chat & tasksconversations, messages, tasks, task_messages, task_memory, task_checkpoints, projects
Memory & knowledgememory_facts, concept_nodes/concept_edges, code_symbols/code_edges, wiki_pages, semantic_cache
Providers & routingcustom_providers, provider_models_cache, provider_pricing, routing_decisions, routing_rules, token_usage, spend_limits, provider_fallback_order
Subscriptions & licensingsubscription_plans, subscription_usage, license_cache, usage_metric_batches
Automationscheduled_tasks, schedule_run_logs, listeners, listener_event_logs, im_bindings, webhooks, webhook_logs, slash_commands
Workflows & teamsautomation_workflows, workflow_runs, workflow_run_steps, workflow_approval_requests, teams
Integrationsconnections, composio_auth_configs, composio_usage, cloud_connectors, mcp_servers, plugins, credentials, credential_pool
Agents & deploymentacp_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.

TierAdds
CommunitySingle-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.
ProfessionalEverything in Community plus multi-agent teams, Aura Routing 2.0, the full set of chat-listener platforms, and spend tracking with limits.
BusinessEverything in Professional plus the visual workflow editor, remote agent deployment, and advanced merge strategies.
EnterpriseEverything 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.

SymptomWhere to look
UI shows nothing while the agent worksConfirm 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 toolThe loop detector warns at 3 identical calls and hard-stops at 6. Cancel with POST /api/inference/stop { "task_id": … }.
Wrong provider / model answeredA 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 modeThe 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 requestCompaction 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 visibleDiscovered 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 runningCheck GET /api/workflow/runs/{id}. Restart the daemon to trigger startup recovery and the retry poller.
Schedule double-firesA 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 tokenBearer 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 codePlantUML renders server-side via the bundled JRE. Install the JRE dependency (Settings → Dependencies).
Image text not readOCR falls back via the aura-ocr sidecar for non-vision models — confirm the binary is present for this platform.
Gatekeeper warning on a shipped DMGAlmost 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].