PiX
A non-linear AI agent workbench — sessions are graphs: branch anytime, and context follows the branch
A PiX session is not a line — it is a graph that keeps growing: every conversation turn is a node, and any node can sprout a new branch at any time.
Non-linear sessions
A traditional AI chat is a single timeline: to change direction you either start over or keep piling questions onto the same thread until the context becomes a mess.
PiX organizes a session as a graph that grows left to right:
- Every turn (your prompt plus the assistant's reply and tool calls) is a node on the graph.
- Several directions can live on the same graph — switch to another branch at any time and keep going, without interference.
- When a path works out, keep going deeper; dead ends stay on the graph, and you can always come back and try another route.
- Sessions are real Pi sessions — no new format — so they remain usable outside PiX.
Branch anytime
Branching is an everyday action in PiX, not something you have to plan ahead:
- Fork from any user message: unhappy with an answer? Fork a new branch from that turn with a different prompt or approach — the original branch stays untouched.
- Continue from a turn: select any earlier node on the graph and pick up the conversation from that moment.
- Clone the active branch: clone the current branch as a save point and experiment freely. Every branch stays visible on the graph, ready to switch back to at any time.
Context follows the branch
Switching branches never means re-setting up context — context is part of the branch:
- The branch chat panel shows only the messages of the active branch. Switch to another branch and the chat switches with it.
- A single click highlights a node on the graph without touching any panel (graph commands such as /fork act on the highlighted node); a double-click aligns the primary chat panel to that node.
- Double-click a node on the graph to open its conversation in the primary chat panel. Ctrl+double-click (or the right-click menu's "Open in chat panel") pins that branch to a second or third side-by-side chat column — up to 3 columns at once for comparing branches. Each branch keeps a single panel: opening another node of an already-pinned branch retargets that column. Every column scrolls and replies independently. Replying from a pinned column grows that branch in place: the column follows the newly created node, and the primary column keeps the current selection. Closing the last pinned column — or the next start — restores the chat width.
- The branch context panel follows the selected node and shows how that turn went: thinking, tool calls, duration, and step count — and you can reply to the selected node right from there.
Built-in extensions
PiX embeds Pi 1.5, including its MCP, Codemode and tool-search extensions. Existing Pi v3 JSONL sessions keep working. Tool rows show elapsed time while running and saved durations after completion. Tool images and nested call records appear in the branch chat; Pi saves nested call names, arguments, status and duration, but not every nested output.
Settings → Model groups available models into Chat, Image generation and Classifiers, with counts and type filters. Image and classifier models are used through Codemode; only chat models appear in conversation pickers or support default, cycling and thinking preferences. Saving OpenRouter credentials automatically refreshes the key's available chat models.
Configure MCP in ~/.pix/agent/mcp.json or a trusted project's .pi/mcp.json, on the machine running the session. After editing these files, run /reload, then /mcp for status, /mcp login [server] to sign in, or /mcp reconnect [server] to reconnect. PiX supports extension selection, input and confirmation dialogs; TUI-specific custom components still need the Pi terminal.
Connecting an MCP server with the default codemode exposure activates Codemode automatically. To enable it yourself, append , +codemode to the existing list in Settings → Tools & images → Default tools, then click outside the field to save. This is a project setting: new sessions inherit it, and PiX automatically reloads the current session when it is idle. No manual /reload is needed for this settings-page change.
The Codemode tool access setting controls how an active Codemode tool presents other tools; it does not enable Codemode. on (Alongside other tools) keeps direct tool calls available; only (Only through Codemode) hides those direct calls from the model. See Pi's MCP configuration for server configuration.
PiX also bundles two extensions with native binaries. They and their runtime dependencies ship with the installer — no separate install needed, and an npm copy you installed through Pi takes precedence.
@ff-labs/pi-fff— fast file and content search: replaces the built-infind/greptools with FFF (Rust-native, SIMD-accelerated):fffindfuzzy file-name search,ffgrepcontent search, andfff-multi-grepmulti-pattern search. Files are pre-indexed in the background at session start so searches return instantly; results are frecency-ranked (frequently used files first) and boosted for git-modified and untracked files.@injaneity/pi-computer-use— desktop app control: lets the agent observe and operate desktop apps on macOS, Windows, and Linux: find open apps and windows, read the text and controls on screen, click, type, scroll, and wait for the UI to change. Useful when an app has no API and the on-screen interface is all there is (the macOS helper requires macOS 14 or newer).
pi-web-access does not ship with the installer: install it with one click on the Settings → Extensions page and keep it current with pi update. It gives the agent web search, URL fetching, PDF extraction, and GitHub research; web search services still use your own configuration and credentials.
PiX also loads internal extensions: file-changes snapshots files before and after the agent edits or writes them to power the "Changes" panel; git-branch records the working Git branch for each user turn.
CLI
Desktop installers register the pix terminal command; macOS registers it on first launch after moving the app to Applications. The desktop CLI uses the bundled runtime and requires no separate Node.js installation. See CLI documentation for removal and portable-format behavior.
The GUI and CLI share an independent background host and the existing PiX session tree. Multiple terminals can run branches concurrently. Accepted agent tasks survive CLI exits, macOS window closure and minimizing to the tray. “Quit PiX” stops the local host completely; active work requires confirmation, defaulting to cancel.
Interactive mode uses Pi's native terminal editor, Markdown and tool cards, model picker, and searchable tree selector. Type / for commands, /tree to choose a branch, or /sessions to resume.
After installation, open a new terminal in your project directory:
pix
pix run "Check the project tests"
pix sessions
pix tree --session <session-id-or-path>
See CLI documentation for commands, concurrency, and real agent verification.
Download
Grab the installer for your platform from GitHub Releases:
- Windows:
PiX-Setup-x.y.z.exe(installer) orPiX-Portable-x.y.z.exe(portable), x64. - macOS: choose the installer that matches your Mac's chip (check → About This Mac):
PiX-x.y.z-arm64.dmg.
- Intel processor: PiX-x.y.z-x64.dmg.
- Open the DMG and double-click PiX. Installation proceeds normally when idle; only running tasks trigger cancellation, recheck, and confirmed interruption options.
- Zip archives are also available; choose arm64 for Apple silicon or x64 for Intel.
- Linux:
PiX-x.y.z-x86_64.AppImage(portable),PiX-x.y.z-amd64.deb,PiX-x.y.z-x86_64.rpm, plus tar.gz. x64.
Community
Join our WeChat group and include pix in your request message:
Contributors
Thanks to everyone who has contributed to PiX:
Contributions are welcome: open an issue for bugs and ideas, or send a pull request.