Blazorly features

Everything the harness actually ships: the chat UI, the toolset, multi-agent orchestration, durable sessions, the decision model, sandbox presets, and the CLI surfaces. No vapour. No “coming soon” as a heading.

Blazorly chat-first web UI with live tool cards and a running session.
Chat view: user brief, assistant plan, tool cards for read / edit / bash.

Chat-first web UI

Blazorly’s primary surface is a Blazor Server app on port 5080. It is not a thin log viewer. Streaming assistant text, reasoning, and tool cards land in the transcript as they happen. A context meter shows how much of the window is used. A task list tracks the agent’s own todos. A delegations panel tracks every sub-agent.

The sidebar groups sessions by workspace. Search hits the session index, not a fuzzy title match. You can fork a settled turn, rename a session, archive it, or generate AGENTS.md docs from a repo scan without leaving the chat.

Trajectory tab: turn 1 completed with read, edit, bash; turn 2 running.
Trajectory tab — the same session as a timeline. Chat is the other tab.
Settings Model and API tab with DeepSeek and loaded models.
Settings → Model & API. Four more tabs sit beside it.

Settings tabs

Settings is not one long form. It is five tabs. Screenshots and field-by-field notes are in the Settings guide.

TabWhat you set
Model & APIProvider, model list from the API, base URL, key. Per-provider keys.
Custom providersExtra OpenAI-compatible routes in the session picker.
Sessions & contextJSONL vs SQLite, window size, compaction, spill, local telemetry.
CapabilitiesWhich plugins exist: web, MCP, terminals, teams, System One, tool-gate.
Permissions & sandboxDefault preset for new sessions; optional E2B remote sandbox.
Capabilities tab with feature toggles.
Capabilities — a plugin that is off is absent from the tool list.
Permissions and sandbox tab with workspace-write selected.
Permissions & sandbox — default for new chats. Live chats use /permission.

Session tabs

Chat vs Trajectory, plus Terminal and Stats, are documented with screenshots in session views. Chat is the conversation. Trajectory is the durable log as a timeline, with a raw-events pager for the JSONL.

Workspace tools

The built-in toolset is what a coding agent needs to finish work, not a demo subset:

ToolWhat it does
bashRun a command. Cancel kills the process tree and records a structured abort.
read / write / editFile I/O with workspace policy from the permission preset.
grep / globSearch the tree without shelling out to a brittle find pipeline.
web_search / web_fetchLook things up and read URLs when the brief needs them.
todo_writeKeep a visible task list in the session chrome.
subagent_*Start, message, list, and interrupt child agents.
swarm / reviewFan-out with a reviewer; independent verdicts on the workspace.
job_*Background jobs: list, read output, kill.
skillLoad skill instructions into the turn.
session_search and tracesQuery the durable log, not a screenshot of it.

MCP servers you configure in settings are loaded as additional tools. Plugins you do not want can be disabled by name.

Multi-agent orchestration

Delegation is reserved for work that is actually large or parallel. A one-file edit stays inline. When the lead does spawn children, they run inside the parent chat:

A delegated child never hangs on ask_user_question: it answers itself. See multi-agent orchestration.

Durable sessions and interruption

Blazorly treats interruption as a first-class state, not an error path. The session log is append-only JSON-lines (or SQLite). Every turn ends with an explicit reason. Cancelled tools close with a durable result. Partial assistant output is committed. A process killed mid-turn leaves a log that reloads with in-memory repair and resumes. Measured: median 0.3 ms to abort mid-stream (in-process adapter); 148 ms median to abort inside a bash process-tree kill; a 132,010-event production session cold-replays in 1.29 s.

Headless runs map finish reasons to exit codes: 0 completed or max-tokens, 2 error or blocked, 3 aborted or interrupted. That is the contract CI should rely on. Read durable sessions.

Permission presets and sandbox

Three presets, switchable with /permission:

macOS and Windows build and run without Landlock; the confining presets simply cannot jail those tools there. The UI shows when a preset is degraded. Details in permissions and sandbox.

Decision model — System One / JEV-1

Optional. A small classifier handles seams a full LLM call is wasteful for:

The tool gate is hybrid: core + recently used + lexical relevance stay with zero extra calls. The ambiguous tail gets one System One choice, cached per brief. Any failure returns the full tool list — byte-identical to pre-gate behaviour. Stats at GET /api/decisions.

Providers and routes

Works with DeepSeek, OpenAI, Anthropic, xAI, Ollama, LM Studio, and any OpenAI-compatible endpoint. Custom routes live in Settings. Z.ai ships two routes: pay-as-you-go and GLM Coding Plan. Model lists are discovered live from each provider’s API. Keys resolve per request.

CLI surfaces

blazorly                 # web UI, port 5080
blazorly run "job"       # headless, cwd is the workspace
blazorly sessions        # list / import / seed
blazorly init            # draft AGENTS.md (dry-run; --write to create)
blazorly eval            # scored task benchmarks
blazorly decisions       # System One doctor / probe
blazorly serve-stdio     # JSON-RPC automation protocol
blazorly serve-acp       # Agent Client Protocol for editors
blazorly update          # checksum-verified self-update

More in headless, CI, and editors.

What it is not

Install the binary and open the UI.

Install Blazorly