Sessionboxer

Working with code

Utilities: the systems around your software, used by name

Register observability and application systems (New Relic, Grafana, Graylog, Argo CD, RabbitMQ, MongoDB, a QA app, an SSH host) per environment with their credentials, switch them on per session, and let the agent use them by name without ever seeing a secret. Procedures are skills about investigating with them.

For incidents, "is it working?" checks and reproducing bugs, the agent needs the systems around your software, not just the box: New Relic, Grafana, Graylog, Argo CD, a RabbitMQ admin UI, a MongoDB, the QA deployment of the app, a bastion host. Register those once as Utilities and switch them on per session; the agent finds out what it has, uses the credentials without ever seeing them, and can be given procedures that say how to investigate what.

  • Global settings → Utilities. First the Environments the Utilities point at — prod, staging, qa by default; add your own. An Environment marked production is off for new sessions and the agent is told to only look there. Then the Utilities in two groups: Observability (where to look: dashboards, logs, traces, alerts, deploy state) and Applications (what to poke: the systems under test, admin UIs, queues, databases, hosts). Add … Utility asks for the kind — a preset (New Relic, Grafana, Graylog, Argo CD, RabbitMQ, MongoDB, a web app, an SSH host) fills in the facets from one URL, or Custom — the Environment, the URL and a short name. Each Utility has credentials (user, password, token, totp for a 2FA secret, ssh_key, or any name you like; stored with the definition, write-only, never shown again, never in snapshots or in the chat) and up to five facets: a web UI, an HTTP API (base URL and headers such as API-Key: ${cred:token}), an SSH host (with jump host), a command-line client (install step and environment variables), and an MCP server (which joins the session's MCP servers while the Utility is on, so mongodb-mcp-server --readOnly or your Graylog MCP is a Utility, not a separate MCP entry). Read-only (the default) tells the agent to look and not change. Notes are for the agent: what to look for, useful queries, quirks.
  • Per session: New Session, the Fork dialog and Session settings → Utilities show them grouped by group and Environment with a switch at each level — all of Observability, all of staging, or one at a time. New sessions start with the Utilities marked default in Environments marked default. Changing the set while the agent is idle applies at once (its MCP servers restart if one changed); while it works, at the end of the turn. The chat shows a Utilities now: … marker.
  • In the box, the agent reads .sessionboxer/utilities.json (names, Environments, facets and credential names, never values) and its briefing explains the rest: ${util:<name>.password} typed with the desktop keyboard tool is replaced by the real value on the way to the screen (so it can log into a web UI it opened without the password ever appearing in the transcript), ${util:<name>.otp} becomes the current 2FA code, sb-util env <name> -- <command> runs a command with UTIL_USER, UTIL_PASSWORD… set, sb-util curl <name> <path> calls the HTTP API with the headers filled in, sb-util ssh / sb-util tunnel reach the SSH host, sb-util open shows the web UI in the Desktop. Credentials live on tmpfs inside the box (never in the Workspace, never in a snapshot) and are removed when the Utility is switched off.
  • From the chat: "add newrelic with user bocato password … at https://one.newrelic.com" makes the agent call utilities_add; a card shows every field with the credentials masked, Allow stores it and switches it on. Since the message itself is in the transcript, prefer the composer command for the credentials: /util add newrelic with user bocato pass s3cret token NRAK-… totp JBSW… at https://one.newrelic.com in staging opens the same form in the browser and stores it without anything going to the agent. The agent can also ask to switch a registered Utility on (utilities_enable; a card) and describe what it has (utilities_list, utilities_get). See the sessionboxer MCP tools.
  • Procedures (Global settings → Utilities → Procedures) are skills about investigating or verifying something with the Utilities — "find why an endpoint returns 5xx: deploys, errors, logs, traces" — written by you (start from Add "Investigate an incident", or Import SKILL.md…) or proposed by the agent after an investigation worked (procedure_save, a card to allow). Each becomes ~/.claude/skills/<name>/SKILL.md in every session whose Utilities and Environments it names; Export downloads one.

This chapter is generated from docs/GUIDE.md in the Sessionboxer repository. Found a mistake? Open an issue.