Appearance
Agents and integrations
Vistara works with agents where they already run. You do not launch agents inside Vistara, and you do not change how you start them.
Support at a glance
| Agent or tool | Listed in the overlay | Cards for questions and approvals | Your answer reaches the session | Live conversation | Checks in Workstate |
|---|---|---|---|---|---|
| Claude Code | Yes | Yes, through hooks | Yes: hook, or the session's inbox socket | Yes | Yes |
| Codex | Yes | Approvals, through hooks | Approvals: yes, through the hook. Free text: typed into Warp if you allow it, otherwise copied | Yes | Yes |
| Cursor (CLI and IDE chats) | Yes | No | Copied to clipboard | No | No |
| Warp AI | Only with the Warp permission on | No | Copied to clipboard | No | No |
| Claude Desktop (chat) | No | No | No | No | Reads all of it through the Vistara MCP server |
Claude Code
Claude Code is the most complete integration.
- Hooks. Connecting adds HTTP hooks to
~/.claude/settings.jsonfor approvals,AskUserQuestionquestions, turn ends, and session events. See How it works. - Approvals and questions are held for up to 60 seconds while a card is up. Your click goes back as the hook's response.
- Questions at the end of a turn. When Claude ends a turn with a question ("Want me to open the PR?"), its Stop hook is held for up to 60 seconds. A typed reply continues that same turn.
- Replies at any other time go through the session's own inbox socket. This works whichever tab or window the session is in, and whether it is busy or idle.
- Sub-agents show by name under their parent session and stay quiet when they finish.
Sessions started before you connected need one restart: claude --resume <session-id>.
Claude Code inside Claude Desktop
When Claude Code runs inside the Claude Desktop app, we expect it to use the same ~/.claude/settings.json hooks and to work the same way. We have not verified this yet.
Codex
- Hooks. Connecting adds a command hook to
~/.codex/hooks.jsonfor approvals, session start, prompts, tool use and turn ends. Codex asks you to trust new hooks once; run/hooksin Codex to approve them. - Approvals are held for up to 60 seconds. Codex waits during the hold. If you do not answer in time, Codex asks in its own terminal, and the card tells you so.
- Free-text replies. Codex has no inbox socket. Vistara types a reply into the session's Warp tab only if you turn on Terminal typing and the tab's title matches the session exactly. Otherwise it copies the reply and the card says so before you click.
- Option keys. When Codex shows a menu of choices, option buttons send a single keystroke, never Enter. This uses Terminal typing too.
Sessions started before you connected need one restart: codex resume <session-id>.
Cursor
Vistara reads Cursor's agent transcripts and its IDE chat database to list Cursor sessions and their state. The live conversation view is not available for Cursor yet. Cursor has no hooks Vistara can use, so there are no held approvals and replies are copied to the clipboard.
Warp
Warp is optional. With Warp terminals and Warp AI turned on, Warp tabs appear in search and Warp's own agent appears in the session list. macOS asks once to let Vistara read Warp's data.
With Terminal typing turned on, Vistara can type a reply into a visible Warp tab. Warp cannot focus a specific tab from outside, so for a terminal search result Enter copies cd <path> instead.
Any terminal
The core loop needs no terminal integration. Hooks and inbox sockets work the same in Terminal, iTerm, Warp, or the terminal inside VS Code or Cursor. Only the optional typing fallback is Warp-specific.
Claude Desktop
Claude Desktop's chat mode has no hooks, so Vistara cannot show cards for its conversations or answer them. Desktop chats can still read everything Vistara knows, through the Vistara MCP server.
From the app: open the overlay, click ⚙ → Add to Claude Desktop, then quit and reopen Claude Desktop. In any chat:
use vistara: what are my agents doing?
Vistara adds one vistara entry to ~/Library/Application Support/Claude/claude_desktop_config.json, keeps every other entry, and saves a backup of the file first (claude_desktop_config.json.vistara-backup-<time>). It will not touch a config file it cannot parse.
The entry runs Vistara's own executable as a small bridge between Desktop (which speaks MCP over stdio) and Vistara's local endpoint, so it needs no Node.js or npx install:
json
"vistara": {
"command": "/Applications/Vistara.app/Contents/MacOS/Vistara",
"args": ["/Applications/Vistara.app/Contents/Resources/mcp/vistara-mcp-bridge.mjs"],
"env": {
"ELECTRON_RUN_AS_NODE": "1",
"VISTARA_MCP_URL": "http://127.0.0.1:47322/mcp",
"VISTARA_MCP_TOKEN": "<your local token>"
}
}If Vistara is not running, the tools answer with "Vistara is not running". To remove it, delete the vistara entry and restart Claude Desktop.
The Vistara MCP server
Vistara runs a small, read-only Model Context Protocol server on your Mac. Any local agent that speaks MCP can ask it what your other agents are doing.
| Tool | What it returns |
|---|---|
vistara_today | Today across all agents: sessions, asks handled, verified work, and one line per project with status, checks and last change. |
vistara_sessions | Running sessions (Claude Code, Codex, Cursor) with title, agent, folder, state and session id. Takes an optional query. |
vistara_context | One session's full context: status, checks, files touched, recent commands and conversation. Takes session, a session id or words from its title or project. |
The server is read-only. It cannot start, stop or reply to any session.
Add it to Claude Code
From the app: open the overlay, click ⚙ → Add to Claude Code. This adds the server at user scope, so every new Claude session can use it.
By hand:
sh
claude mcp add --transport http --scope user vistara \
http://127.0.0.1:47322/mcp \
--header "Authorization: Bearer $(cat ~/.vistara-relay/local-token)"Then, in any new Claude session:
use vistara: what has the Codex agent on my api repo been doing?
Claude calls vistara_context and answers from Vistara's record, without you copying anything.
To remove it: claude mcp remove vistara --scope user.
Other MCP clients
Any client that supports MCP over Streamable HTTP can use the same URL and header. The server accepts JSON-RPC POST requests on /mcp and returns JSON responses; it does not open a server-initiated stream. See Privacy and security for how the endpoint is protected.