con: The Terminal That Treats the Agent Like a First-Class User

A Rust, Ghostty, and GPUI terminal for macOS that gives AI real access to panes, scrollback, and execution, then proves it with benchmarks.

10 min read • View on GitHub • More from nowledge-co

A wide terminal workspace on a white background, split into multiple panes with a human operator at one desk and an AI agent sharing the same work surface. Thin threads connect terminal output, command entry, and scrollback to suggest that the agent is inside the session rather than floating beside it. The scene explains the project’s core idea: shared terminal state instead of a sidebar chatbot.
The thesis of con in one frame: the agent is not an accessory, it is part of the workspace.
Key Takeaways

Most AI terminals still feel like a chat window wearing a shell costume. con takes a harder line. It assumes the agent is not a guest in the terminal, but a participant with real access to panes, scrollback, and execution.

That design choice changes the whole product. Once the agent is part of the session model, UI, state, and evaluation all have to move together. con is interesting because it starts there.

Why the terminal needed a new mental model

Classic terminal tools were built for one operator: the human. Even when they add AI, the model usually stays the same. The assistant watches from the side, explains commands, or drafts text that the user still has to move into the session.

con flips that assumption. It treats live terminal state as context the agent can read and act on. That is a better fit for SSH, tmux, long-running jobs, and the kind of workflows where the screen is not a document, but a moving record of work.

DimensionTraditional terminalAI overlay or sidecarcon
Where the agent livesOutside the sessionBeside the sessionInside the session model
Sees live terminal stateNoSometimes partialYes, through observation frames
Can act directly in-sessionUser onlyUsually indirectYes, through tools and harness
Terminal engineNative terminal coreVariesGhostty embedded through FFI
AI roleAccessoryAssistantFirst-class participant

That difference is bigger than a feature checklist. If the agent can observe the real terminal, then the terminal becomes a workspace with memory and feedback, not just a screen for commands.

con is built like a native app, not a browser in disguise

The repository is organized as a Rust workspace with clear boundaries. con handles the app shell and GPUI surface, con-core holds shared logic, con-ghostty wraps Ghostty through FFI, and con-agent carries the AI layer. That separation is not cosmetic. It keeps terminal performance, shared state, and agent behavior from collapsing into one blob.

The stack matters because con keeps the terminal engine, the session model, and the agent loop separate.

That choice also explains the macOS focus. GPUI gives con a native GPU-rendered surface, while Ghostty provides a serious terminal engine instead of a homegrown parser and PTY stack. The novelty is concentrated where it should be: in how the app coordinates session state and AI behavior.

A close-up blueprint-like illustration of a terminal pane tree dividing into recursive splits. One leaf pane branches into two child panes with ratio lines and measured segments, suggesting that layout is preserved by proportions rather than fixed pixels. The image explains how con keeps a terminal session alive while letting the workspace reconfigure around it.
The pane tree is the hidden spine of the workspace. It lets a terminal session split and grow without losing continuity.

The pane tree is the user interface’s hidden spine

The workspace is not a flat grid. It is a recursive structure. In PaneTree, leaves can become splits, splits can be resized by ratio, and the layout stays responsive as the session evolves. That is a small implementation detail with large consequences: the terminal can change shape without forgetting what is running inside it.

That matters because terminals are stateful in a way most interfaces are not. Output scrolls. Commands launch processes that keep living. Splits appear and disappear. If the layout model is brittle, the whole workspace feels fragile. con’s pane tree makes the session feel continuous even when the geometry changes.

The harness is the real product

This is where con stops being a polished terminal and becomes a different category of tool. The harness turns a live terminal into an environment the agent can reason over. It extracts observation frames, packages context, and offers tools like terminal_exec, file, and shell so the agent can act instead of merely commenting.

That loop is the project’s most important idea. Read the screen. Reason over the current state. Pick a tool. Change the session. Observe the new state. The terminal is no longer a passive surface. It is a feedback system.

That is why the project feels less like a chat assistant and more like an operating surface. The agent is not guessing from a prompt. It is reading a live workspace, taking actions, and getting immediate feedback from the same environment it touched.

Why Ghostty matters more than rewriting the terminal from scratch

con embeds Ghostty instead of trying to replace the terminal engine. That is a practical decision with architectural payoff. Ghostty handles the hard terminal work, while con spends its energy on session coordination, screen extraction, and agent integration.

In other words, the project uses an existing terminal substrate to build a new interaction model on top. That is cleaner than rebuilding PTY and VT behavior in pursuit of a unified app. It also means the app can focus on the part that makes it distinct: the harness and the session graph.

QuestionEmbed GhosttyRebuild terminal engine
Time to mature the core terminalShorterLonger
Risk on PTY and parsing correctnessLowerHigher
Room for AI innovationMoreLess
Where the novelty livesAgent and session modelInfrastructure
Maintenance burdenFocusedBroad

The benchmark suite shows this is more than a demo

The repository’s benchmarks/terminal-agent folder is a strong signal. It uses playbooks and rubrics to evaluate terminal-heavy agent workflows, which means the team is trying to measure competence, not just show a clever interface. That is a serious move for a project in pre-alpha shape.

Benchmarks also make the thesis testable. If con says the agent can participate in a terminal session, then session recovery, command execution, and multi-step workflows should be scored against that claim. Without evaluation, the product would be a demo. With evaluation, it becomes a system.

Where con fits in the terminal wars

The cleanest comparison is not feature-by-feature. It is category-by-category. Traditional terminals optimize for execution. IDE AI tools optimize for code editing. Sidecar assistants optimize for advice. con is aiming at a different target: a terminal where the agent has first-class operational access.

Tool categoryPrimary homeStrengthLimit
Traditional terminal emulatorConsole sessionSpeed and correctnessNo native agent model
AI sidecar or overlayChat panelLow friction assistanceWeak access to live state
IDE-integrated AIEditor bufferStrong code contextTied to editor workflows
conTerminal sessionShared state and actionStill early and macOS-only

That is the most useful way to read the project. Not as another terminal with AI bolted on, but as a prototype for a terminal where the agent is part of the workspace contract.

What con suggests about the next generation of devtools

If agents are going to be real workspace participants, devtools will need richer session models, more explicit context extraction, and better evaluation loops. con points toward that future by treating terminal state as something structured, observable, and actionable.

The implication is broader than terminals. Once the agent is a user of the system, not just a consumer of prompts, the interface has to support shared control. con is a strong sketch of that shift.