Skip to content

feat: TUI client of goose-acp#7362

Merged
alexhancock merged 2 commits intomainfrom
alexhancock/goose-acp-tui
Feb 19, 2026
Merged

feat: TUI client of goose-acp#7362
alexhancock merged 2 commits intomainfrom
alexhancock/goose-acp-tui

Conversation

@alexhancock
Copy link
Collaborator

A new TUI that serves as the first goose-acp client to use the streamable http transport, this PR the basis for phase II of this plan #6642

Demo

Screenshot 2026-02-19 at 12 48 30 PM
Goose.ACP.TUI.Demo.mov

Detail

  • Imports the new GooseClient and types from ui/acp which we will use as the client SDK for interacting with goose-acp over the HTTP transport. (But doesn't use it yet as everything the TUI does is covered by the standard TS ACP SDK. We should consider routing the standard things through GooseClient too, and I or @jamadeo can do that in a followup.
  • Implements a fullscreen TUI experience
  • Supports rendering messages + tool calls and interacting with a goose agent using ACP over HTTP

@alexhancock alexhancock marked this pull request as ready for review February 19, 2026 17:53
Copilot AI review requested due to automatic review settings February 19, 2026 17:53
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new Terminal User Interface (TUI) client for goose-acp that uses the streamable HTTP transport protocol. It represents the first non-desktop client implementation of the goose-acp architecture and establishes the foundation for Phase II of the migration from goosed to ACP-over-HTTP as outlined in issue #6642.

Changes:

  • New TypeScript-based TUI package (ui/text) built with React Ink for terminal rendering
  • Custom HTTP transport implementation with Server-Sent Events (SSE) for streaming responses
  • Full ACP client integration supporting session management, message streaming, and permission prompts
  • Server-side registration of builtin extensions for goose-acp

Reviewed changes

Copilot reviewed 8 out of 10 changed files in this pull request and generated no comments.

Show a summary per file
File Description
ui/text/src/transport.ts Implements HTTP/SSE transport layer for ACP communication
ui/text/src/app.tsx Main TUI application with React Ink components and state management
ui/text/src/cli.tsx CLI entrypoint with command-line argument parsing
ui/text/package.json Package configuration with dependencies and scripts
ui/text/package-lock.json Lock file for reproducible dependency installation
ui/text/tsconfig.json TypeScript compiler configuration
ui/text/README.md Documentation for running the TUI
ui/text/.npmrc npm registry configuration
ui/text/.gitignore Git ignore rules for build artifacts
crates/goose-acp/src/bin/server.rs Registers builtin extensions on server startup
Files not reviewed (1)
  • ui/text/package-lock.json: Language not supported


## Running

1. Run the server `cargo run -p goose-acp --bin goose-acp-server`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's your thinking on how this should work in the future? should the tui app manage a goose acp process?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I think we'll do two things

  1. Provide a version with it bundled into a single executable
  2. Let people npx @block/goose --server $URL

@alexhancock alexhancock added this pull request to the merge queue Feb 19, 2026
Merged via the queue into main with commit d4dfa5d Feb 19, 2026
25 of 27 checks passed
@alexhancock alexhancock deleted the alexhancock/goose-acp-tui branch February 19, 2026 20:59
michaelneale added a commit that referenced this pull request Feb 19, 2026
* main: (46 commits)
  chore(deps): bump hono from 4.11.9 to 4.12.0 in /ui/desktop (#7369)
  Include 3rd-party license copy for JavaScript/CSS minified files (#7352)
  docs for reasoning env var (#7367)
  docs: update skills detail page to reference Goose Summon extension (#7350)
  fix(apps): restore MCP app sampling support reverted by #6933 (#7366)
  feat: TUI client of goose-acp (#7362)
  docs: agent variable (#7365)
  docs: pass env vars to shell (#7361)
  docs: update sandbox topic (#7336)
  feat: add local inference provider with llama.cpp backend and HuggingFace model management (#6933)
  Docs: claude code uses stream-json (#7358)
  Improve link confirmation modal (#7333)
  fix(ci): deflake smoke tests for Google models (#7344)
  feat: add Cerebras provider support (#7339)
  fix: skip whitespace-only text blocks in Anthropic message (#7343)
  fix(goose-acp): heap allocations (#7322)
  Remove trailing space from links (#7156)
  fix: detect low balance and prompt for top up (#7166)
  feat(apps): add support for MCP apps to sample (#7039)
  Typescript SDK for ACP extension methods (#7319)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments