Base URL: http://localhost:7332
All endpoints return JSON unless noted otherwise. CORS is enabled with *.
Health ping endpoint.
Response:
{
"ok": true,
"service": "burns-daemon"
}Returns lightweight diagnostic checks.
Current implementation returns static passing checks.
Returns daemon defaults:
workspaceRootdefaultAgentsmithersBaseUrlallowNetworksmithersManagedPerWorkspacesmithersAuthModehasSmithersAuthTokenrootDirPolicydiagnosticsLogLeveldiagnosticsPrettyLogs
When smithersManagedPerWorkspace is true, Burns supervises one Smithers HTTP server per workspace and routes run/approval/event requests to the correct workspace-local instance.
Auth tokens are never returned in plaintext. The API only returns hasSmithersAuthToken to indicate whether a token is currently stored.
Updates persisted Burns defaults.
Request body must include the editable settings fields above. Optional auth-token controls:
smithersAuthToken: set or replace the stored Smithers auth tokenclearSmithersAuthToken: clear the stored token without changing other fields
Resets persisted settings back to daemon defaults.
This is non-destructive:
- workspace registry is preserved
- workspace files are preserved
- onboarding completion is preserved
Clears Burns application state and returns the app to first-run onboarding.
Factory reset:
- removes all workspace records from Burns
- clears persisted settings
- clears onboarding completion
- preserves repo folders and existing
.smithersdata on disk
Returns first-run onboarding state.
Response:
{
"completed": false
}Marks first-run onboarding as completed.
Returns installed supported CLI agents detected via which.
Supported agent IDs:
claude-codecodexgeminipi
If a CLI is not installed, it is omitted from the response list.
Lists persisted workspaces from SQLite.
Creates a workspace from one of three source types:
local: attach existing local git repoclone: clone git repo URL into managed workspace rootcreate: create a new repo withgit init
Request body is validated by createWorkspaceInputSchema.
When workflowTemplateIds is provided on a Burns-managed workspace, Burns adds only the selected template workflows and preserves any existing workflow files already present in the repo.
For new workspaces, daemon-managed Smithers mode starts a workspace-local Smithers server in the background.
Scans a local repository path for existing Burns workflows under .smithers/workflows.
Available only from loopback/local daemon URLs.
Request body:
{
"localPath": "/absolute/path/to/repo"
}Response body:
{
"localPath": "/absolute/path/to/repo",
"workflows": [
{
"id": "issue-to-pr",
"name": "issue-to-pr",
"relativePath": ".smithers/workflows/issue-to-pr/workflow.tsx"
}
]
}Returns one workspace by ID.
Returns 404 if workspace does not exist.
Opens the workspace directory in the native file manager.
Available only from loopback/local daemon URLs.
Returns 204 No Content on success.
Returns the absolute workspace directory path.
Available only from loopback/local daemon URLs.
Returns workspace status based on filesystem presence:
healthydisconnectedunknown
Returns workspace Smithers runtime status:
runtimeMode(burns-managedorself-managed)processState(starting,healthy,crashed,stopped,self-managed,disabled)lastHeartbeatAtrestartCountcrashCountportbaseUrl
Starts workspace Smithers runtime (managed mode) and returns server status payload.
Restarts workspace Smithers runtime (managed mode) and returns server status payload.
Stops workspace Smithers runtime (managed mode) and returns server status payload.
Workflows are stored on disk under:
<workspace>/.smithers/workflows/<workflow-id>/workflow.tsxLists workflow summaries for a workspace by scanning workflow directories.
Returns workflow metadata plus source content.
Creates or overwrites workflow.tsx with provided source.
Request body:
{
"source": "..."
}Deletes the workflow directory recursively.
Returns 204 No Content on success.
Opens the workflow directory in the native file manager.
Available only from loopback/local daemon URLs.
Returns 204 No Content on success.
Returns the absolute workflow directory path.
Available only from loopback/local daemon URLs.
Generates a new workflow file using a selected installed agent CLI.
Request body:
{
"name": "issue-to-pr",
"agentId": "codex",
"prompt": "Create a workflow that..."
}Edits an existing workflow file via selected installed agent CLI.
Request body:
{
"agentId": "codex",
"prompt": "Add an approval gate before deploy..."
}Returns run list for workspace (Smithers-backed).
When daemon-managed mode is enabled, Burns ensures the workspace Smithers instance is running before handling this request.
Starts a new run for the selected workflow.
Request body:
{
"workflowId": "issue-to-pr",
"input": {}
}Returns one run by ID.
Resumes a run.
Request body:
{
"input": {}
}Cancels a run.
Request body:
{
"reason": "optional reason"
}Returns persisted run events from local SQLite.
Each event includes normalized fields (seq, runId, type, timestamp, optional nodeId/message) plus optional rawPayload, which is the original Smithers event payload when available.
For legacy mirrored events that predate rawPayload persistence, Burns attempts to hydrate rawPayload from the workspace Smithers database (.smithers/state/smithers.db) using runId + seq.
Optional query string:
afterSeq=<number>to fetch incremental events
SSE proxy stream to Smithers events endpoint.
Response content type: text/event-stream.
Incoming event: smithers payloads are persisted to SQLite.
Burns also maintains a background ingestion stream per active run, so events continue to persist even if no web client is currently connected to this SSE endpoint.
Returns workspace approvals from local persistence.
Sends approval decision to Smithers, resumes the run through the standard resume flow, and persists local approval state.
Request body:
{
"decidedBy": "operator-name",
"note": "optional note"
}Sends denial decision to Smithers and persists local approval state.
Request body:
{
"decidedBy": "operator-name",
"note": "optional note"
}Route handlers normalize thrown errors into JSON responses:
{
"error": "message"
}Validation and business-rule failures generally return 400 or 409. Missing resources return 404.