Skip to content

Releases: AnEntrypoint/agentgui

AgentGUI v1.0.935

20 May 23:40

Choose a tag to compare

AgentGUI v1.0.935

Latest commit: 85628e9
agentgui: native WS chat protocol (no acptoapi dep)

Browser → WS → agentgui server → claude-runner / ACP daemons. Completely
self-contained; no acptoapi or external proxy involvement.

Wire codec: JSON over WS text frames (drop msgpackr binary). Browser doesn't
get a bundler — JSON.stringify / JSON.parse works everywhere. Server-side
codec keeps the same encode/decode API so ws-protocol.js + ws-optimizer.js
need no changes beyond the impl swap.

  • lib/codec.js: JSON impl, accepts Buffer/Uint8Array/string in decode().
  • site/app/js/codec.js: browser mirror.
  • package.json: drop msgpackr dep (no other consumers).

New WS methods (lib/ws-handlers-util.js + wired via registerWsHandlers in
server.js):

  • agents.list → enumerate registered agents from
    claude-runner-agents.js registry.
  • conversation.subscribe → add ws to subscriptionIndex[sessionId].
  • chat.sendMessage → run runClaudeWithStreaming(content, cwd,
    agentId, config) with an onEvent that
    broadcasts streaming_start /
    streaming_progress / streaming_complete /
    streaming_error keyed by an ephemeral
    sessionId. Bypasses the gutted
    db-queries layer entirely.
  • chat.cancel → kill in-flight child proc for sessionId.

Browser client (site/app/js/backend.js): singleton WS connection to /sync
with auto-reconnect; pending-reply map for request/response; per-sessionId
listener registry for broadcasts. streamChat() async-iterator yields
{type:'text'|'tool'|'result'|'error'} for backward compatibility with
existing site/app/js/app.js. listModels() now calls agents.list over WS.
probeBackend + history calls remain plain HTTP (served by ccsniff).

Smoke test (scripts/smoke-ws-chat.mjs): boot server with empty
CLAUDE_PROJECTS_DIR, connect WS, exercise sync_connected + agents.list +
conversation.subscribe. Verified: 15 agents returned, first = claude-code,
subscribe returns {subscribed:true}.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Install with:

bun x agentgui@latest
npm install -g agentgui
npx agentgui

Web interface: http://localhost:3000/gm/

Notes:

  • Data stored in ~/.gmgui/ folder
  • Requirements: Node.js 18+

AgentGUI v1.0.934

20 May 23:12

Choose a tag to compare

AgentGUI v1.0.934

Latest commit: 0656919
agentgui: drop acptoapi refs + port terminal WS endpoint

Docs & comments (4 files):

  • README.md: rewrite "Live client" section; agentgui is a single same-origin
    Node server + browser client. ccsniff history is in-process, not external.
  • AGENTS.md: replace "ACP-to-API History Integration" + "Live History Stream
    Wiring" sections to reflect ccsniff in-process mount; correct the
    "acptoapi has the history" misclaim.
  • site/app/index.html: meta description no longer says "client for any
    acptoapi backend".
  • site/app/js/backend.js: header comment now describes the agentgui client
    (ccsniff history, /health, /sync chat WS).

Terminal endpoint (ported from acptoapi 13f208e, deleted there per audit):

  • lib/terminal.js (NEW, ESM port): createSession/getSession/listSessions/
    closeSession/writeToSession/resizeSession/attachWs. node-pty optional via
    createRequire fallback to pipe spawn with windowsHide.
  • lib/http-handler.js: POST/GET /api/terminal/sessions, GET/DELETE
    /api/terminal/sessions/. Gated by the existing PASSWORD Basic-auth
    check at the top of httpHandler — never anonymous.
  • lib/ws-setup.js: route WS upgrades for /api/terminal/sessions/ to
    term.attachWs(sid, ws). Reuses the same connection-level PASSWORD check.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Install with:

bun x agentgui@latest
npm install -g agentgui
npx agentgui

Web interface: http://localhost:3000/gm/

Notes:

  • Data stored in ~/.gmgui/ folder
  • Requirements: Node.js 18+

AgentGUI v1.0.933

20 May 11:37

Choose a tag to compare

AgentGUI v1.0.933

Latest commit: 89b7816
feat(site/app): consume anentrypoint-design 0.0.127 — Select+Btn, md assistant, streaming

Pin unpkg import to 0.0.127. Replace raw model picker with the new Select kit. Replace raw stop/new and save+reconnect with Btn. Assistant turns now render kind:'md' so model markdown highlights through the kit's marked+DOMPurify path; user turns stay plain text. In-progress empty assistant message displays as typing indicator until first token. EventList passes items: + code: matching the canonical kit signature. Install with: bun x agentgui@latest npm install -g agentgui npx agentgui Web interface: http://localhost:3000/gm/ Notes: Data stored in ~/.gmgui/ folder Requirements: Node.js 18+

AgentGUI v1.0.932

19 May 17:33

Choose a tag to compare

AgentGUI v1.0.932

Latest commit: a610867
feat: single-surface pivot — ccsniff in-process, kits-only UI, drop legacy static/

  • server.js mounts ccsniff createHistoryRouter() at /v1/history/* in-process
  • server.js serves site/app/ at / (was static/)
  • site/app/js/backend.js defaults to same-origin (no acptoapi base URL)
  • site/app/js/app.js refactored to anentrypoint-design kits (PageHeader, SearchInput, TextField, EventList) — zero raw ds-section wrappers
  • delete static/ entirely (~90 files)
  • delete lib/jsonl-watcher.js, jsonl-parser.js, db-queries*.js (10), routes-sessions/conversations/messages/threads/runs/scripts/agent-actions/auth-config/util/debug.js (10), ws-handlers-conv/conv2/session/session2/run/scripts/queue/msg.js (8), ws-legacy-handlers.js
  • shim lib/routes-registry.js, ws-setup.registerLegacyHandler, database.createQueries as no-ops to keep plugins/recovery/queue callers working without legacy DB
  • prune rippleui devDep; add ccsniff dep
  • AGENTS.md rewritten for new architecture

Browser-witnessed live: localhost:3056/ renders kits, ccsniff /v1/history/sessions returns valid JSON, SSE hello received, ws /sync opens, 0 console errors.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Install with:

bun x agentgui@latest
npm install -g agentgui
npx agentgui

Web interface: http://localhost:3000/gm/

Notes:

  • Data stored in ~/.gmgui/ folder
  • Requirements: Node.js 18+

AgentGUI v1.0.931

04 May 22:28

Choose a tag to compare

AgentGUI v1.0.931

Latest commit: d5be410
docs(AGENTS.md): live history stream wiring + acptoapi startup latency

Live client subscribes to /v1/history/stream on history tab entry, closes
on leave. State shape: state.live = { es, connected, lastEventTs, error,
eventCount }. SSE dispatch: hello → connected, event → append-to-events
when sid matches selectedSid + bump in-place sidebar counters,
conversation → refreshHistory(), error → live.error.

acptoapi caveat: first /v1/history/* request triggers a synchronous
loadOnce() over ~/.claude/projects (~300 files / 80MB / 69k events here),
30-90s blocking window. Subsequent calls fast.

Binary at c:/dev/acptoapi/bin/agentapi.js, port 4800, CORS open.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Install with:

bun x agentgui@latest
npm install -g agentgui
npx agentgui

Web interface: http://localhost:3000/gm/

Notes:

  • Data stored in ~/.gmgui/ folder
  • Requirements: Node.js 18+

AgentGUI v1.0.930

04 May 22:25

Choose a tag to compare

AgentGUI v1.0.930

Latest commit: 85174a4
feat(site/app): subscribe to /v1/history/stream for live session tracking

Previously refreshHistory() only ran on tab nav; the SSE wiring in
backend.js (streamHistory) was exported but never invoked, so the live
client never saw new claude turns until a manual reload. The history tab
went stale within seconds.

Wire the EventSource lifecycle to the history tab:

  • navTo('history') opens the stream via B.streamHistory and stores it as
    state.live.es. Leaving the tab closes the stream and nulls state.live.
  • 'hello' marks state.live.connected=true.
  • 'event' appends to state.events when data.sid matches state.selectedSid,
    and bumps the matching row's events/tools/errors counters in place so
    the sidebar reflects activity without a full re-fetch.
  • 'conversation' kicks a refreshHistory() so brand-new sessions appear.
  • 'error' sets state.live.error and the crumb pip flips to '○ stream
    offline'.

Render throttling: scheduleRender() coalesces SSE bursts via rAF so
high-volume turns don't thrash the diff. The crumb's right slot now
shows '● live · N' on history with N = state.live.eventCount.

Witnessed against acptoapi 1.0.38 on :4800 with 58 indexed sessions:

  • es.readyState=1, esUrl=/v1/history/stream
  • eventCount climbed 3 → 16 within ~10s of unrelated activity
  • leaving history tab → es=null, connected=false (clean teardown)
  • sessions sidebar populated with 58 rows, 0 pageerrors

Note: first request to any /v1/history/* triggers a synchronous index
build over ~/.claude/projects that can take 30-90s on first hit (~300
JSONL files / 80MB / 69k events in our env). Subsequent requests are
sub-second. Documented in AGENTS.md.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Install with:

bun x agentgui@latest
npm install -g agentgui
npx agentgui

Web interface: http://localhost:3000/gm/

Notes:

  • Data stored in ~/.gmgui/ folder
  • Requirements: Node.js 18+

AgentGUI v1.0.929

04 May 21:53

Choose a tag to compare

AgentGUI v1.0.929

Latest commit: 6916c54
docs(AGENTS.md): document webjsx applyDiff key caveat for sibling arrays

Surfaced 2026-05-04 while validating site/app/ chat surface. Mixing one
bare string with keyed h() elements in a Crumb({right:[...]}) array
crashes applyDiff with "Cannot read properties of undefined (reading
'key')". Wrap any sibling string in h('span',{key},...) so the array is
homogeneously keyed VElements.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Install with:

bun x agentgui@latest
npm install -g agentgui
npx agentgui

Web interface: http://localhost:3000/gm/

Notes:

  • Data stored in ~/.gmgui/ folder
  • Requirements: Node.js 18+

AgentGUI v1.0.928

04 May 21:51

Choose a tag to compare

AgentGUI v1.0.928

Latest commit: 938dd96
fix(site/app): viewport-lock chat tab + webjsx key caveat

Validated layout via headless browser (1440x900):

  • shell height was 1188px in 900px viewport → 288px overflow, status bar
    pushed below the fold at y=1164.
  • Root cause: chatMain wrapped Chat inside ds-section with h1 + lede + a
    full Panel for the model selector, eating 400px above the chat surface.
  • Fix: move model select + new/stop actions into Crumb({right}), drop
    ds-section editorial header on the chat tab. Chat now sits directly
    under the crumb at y=127 with the SDK's own internal padding.

Also fix the documented webjsx applyDiff key caveat that surfaced when
cycling tabs: Crumb({right: [...]}) array contained a bare string for the
connection-dot label alongside keyed elements, crashing applyDiff with
"Cannot read properties of undefined (reading 'key')". Wrap the dot in
h('span',{key:'dot'},...) so every sibling in the array is a VElement.

Final witness (chat tab, 1440x900):
shell=900px doc=900px overflow=false
chat at y=127 h=480 status at y=876
pageerrors=0 across chat→history→settings→chat cycle

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Install with:

bun x agentgui@latest
npm install -g agentgui
npx agentgui

Web interface: http://localhost:3000/gm/

Notes:

  • Data stored in ~/.gmgui/ folder
  • Requirements: Node.js 18+

AgentGUI v1.0.927

04 May 21:32

Choose a tag to compare

AgentGUI v1.0.927

Latest commit: 732b19b
feat(site/app): rebuild live client on anentrypoint-design SDK only

Strip all CSS overrides from index.html — keep just html/body/#app sizing
so AppShell fills the viewport. Rewrite app.js to compose every surface
from SDK components (AppShell, Topbar, Crumb, Side, Status, Chat,
ChatComposer, Row, Panel) with no agui-* classes. Chat uses ds-section

  • Panel wrappers, history sessions render as Row with rail-green/flame
    by error state, history detail uses Panel + numbered Row list.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Install with:

bun x agentgui@latest
npm install -g agentgui
npx agentgui

Web interface: http://localhost:3000/gm/

Notes:

  • Data stored in ~/.gmgui/ folder
  • Requirements: Node.js 18+

AgentGUI v1.0.926

03 May 16:48

Choose a tag to compare

AgentGUI v1.0.926

Latest commit: 954c09e
docs(AGENTS.md): add better-sqlite3 node v24 startup caveat and rs-learn audit notes

Install with:

bun x agentgui@latest
npm install -g agentgui
npx agentgui

Web interface: http://localhost:3000/gm/

Notes:

  • Data stored in ~/.gmgui/ folder
  • Requirements: Node.js 18+