Build a terminal app an agent can use too
Ink components for CLIs, plus a bridge so an agent drives the same TUI.
The problem
CLI tools get the worst of both worlds. For humans they are a wall of flags with no discoverability; for agents they are text output to be parsed with regular expressions that break the first time you improve a message.
A terminal UI fixes the human half. The agent half needs the same thing the web side needed: a way in that is not scraping the output.
What you are building
Live surfaces, not screenshots — every one composed from the same components you would install.
Shared terminal
The real xterm-backed <Terminal> with a controlled output buffer, so a human and an agent write to one session.
The code
// The component diffs `output` and writes only the appended delta, so a host can
// drive it from React state -- which is what lets an agent and a human write to
// the SAME session rather than two views of it.
const [output, setOutput] = useState("");
<Terminal
output={output}
shells={BUILTIN_SHELLS}
onInput={(data) => pty.write(data)}
/>npm i @particle-academy/fancy-term-hostHow to solve it
Build the interface from TUI components
Ink components for terminal apps — lists, tables, modals, drawers — so the CLI has a real interface instead of flags.
Run thisbash npm install @particle-academy/fancy-tuiRegister the TUI bridge
The same Human+ contract as the web surfaces: the agent reads and drives the actual TUI state rather than parsing what it prints.
Embed a terminal in the web app, if you need one
A themeable, controlled terminal component for the browser, with a headless Node backend when you need real PTYs that survive a page reload.
Run thisbash npm install @particle-academy/fancy-term
