Resources

Three sibling dashboard pages that compose into an agent launch: Agent definitions bundle a kind + permission mode + skills + system prompt + secrets; System prompts are versioned CLAUDE.md / AGENTS.md documents; Secrets are AES-GCM ciphertext blobs decrypted in the daemon's memory at spawn time.

Agent definitions#

An agent definition is a reusable launch template. /agents lets you pin a name + kind (claude_code | codex), default permission_mode, and the set of skills / system prompt / secrets to attach. Launching from the New session dialog with an agent picked applies all of those server-side — the daemon receives the merged environment.

Permission modes mirror the underlying harness flags — see Sessions → Permission modes. Picking dangerous_skip_all in the form requires an explicit ack checkbox (no accidental bypasses).

System prompts#

Versioned markdown documents that the daemon writes to CLAUDE.md / AGENTS.md in the session's cwd before harness startup. /system-prompts creates the prompt; each save bumps the version monotonically.

Why versioned#

Editing a prompt mid-flight shouldn't change what an already-running session sees — agent definitions pin a specific (prompt_id, version) pair, and the daemon materialises THAT version into the cwd. Future sessions pick up newer versions when the agent is re-saved against them.

Secrets#

/secrets stores named values that agents propagate to the harness as env vars. Cleartext is encrypted with AES-256-GCM (server key from SECRETS_KEY env), only the ciphertext + nonce hit Postgres, and the List endpoint never returns the value back to the dashboard — once you save it the UI shows just the name.

Daemon path#

At session launch the API encrypts each requested secret with an ephemeral X25519 key derived from the daemon's registered pubkey + ChaCha20-Poly1305, sends it over WS, and the daemon decrypts in memory, sets it in the harness env, then zero-wipes the plaintext on session_ended. Values that appear in stdout get replaced with [REDACTED:NAME] before the event hits the dashboard.