deixis
A visual surface for terminal Claude Code that provides a persistent dashboard the agent curates itself, per-session telemetry with cost, and a menu bar glyph for status.
README
deixis
A visual surface for terminal Claude Code. The agent draws its plan to a browser canvas, every session reports its own status and cost, and a menu-bar glyph tells you which one needs you.
deixis — the class of pointing words: this, here, look.
Claude Code lives in a terminal — a linear text stream with no spatial view. Deixis gives it one: a persistent dashboard the agent curates itself (not a log scraper), plus passive per-session telemetry, plus a glance in your menu bar. macOS.
menu bar: ⚠ 1 dashboard (localhost:3939)
────────────────────── ┌──────────────────────────┐
✗ api errored 2m Bash │ ● auth-refactor working │
● deixis working 9s Edit │ ✓ parse ✓ load │
○ claude idle 20m │ ⏳ write tests │
────────────────────── │ 678k ctx · ◆ Progress… │
Open dashboard ↗ └──────────────────────────┘
What it does
| Layer | What you get |
|---|---|
| Canvas | Four MCP tools let a session render Markdown, a live progress checklist, and a full document to a card that persists across turns — stop scrolling the transcript to find where it's at. The dashboard defaults to a single-column feed; a Pinterest masonry grid is opt-in via Settings. |
| Review | render_file opens a spec or plan the agent wants you to read in a full reading view — not a Markdown file you hunt down in an editor. It asks for the verdict in a plain message, so approval relays through Claude Code Remote Control and you can accept it from your phone. |
| Telemetry | A hook reports every session (working / waiting / errored / finished) with tokens and an equivalent API cost, read straight from the transcript. Unified onto one card per session. |
| Menu bar | A SwiftBar plugin: ◆ when all's calm, ⚠ when a session is waiting or errored. Click for the list — status, current tool, time-in-state, context size. |
Quick start
# macOS · Node 20+ · pnpm
git clone https://github.com/alcides-collective/deixis
cd deixis && pnpm install && pnpm -r build
node packages/cli/dist/index.js init # hub + MCP tools + telemetry hooks (launchd, :3939)
node packages/cli/dist/index.js menubar # SwiftBar glyph (optional; needs SwiftBar)
Open http://localhost:3939, then start any Claude Code session — it appears automatically. Ask it to "track this on the deixis canvas" to populate progress and notes.
Undo with node packages/cli/dist/index.js uninstall (and … menubar --uninstall).
How it works
Claude Code session
├─ MCP shim ──┐
└─ hook ──────┼──→ hub :3939 ──SSE──→ dashboard (React)
└──────────────→ menu bar (SwiftBar)
A long-running hub holds session state in memory and pushes updates over SSE. The MCP shim and the hook both report under Claude Code's real session id, so the agent's canvas and its telemetry land on the same card.
Architecture
pnpm monorepo, TypeScript throughout:
| Package | Role |
|---|---|
shared |
Protocol + domain types (the single source of truth) |
hub |
Express + SSE server, in-memory store, telemetry (pricing, transcript, status) |
shim |
Per-session stdio MCP server — the four canvas tools (render_markdown, progress_set, progress_update, render_file) |
hook |
Tiny hook script that posts Claude Code events to the hub |
web |
React 19 + Tailwind v4 dashboard (feed / masonry layouts, reading overlay, Settings, light/dark) |
menubar |
SwiftBar plugin (renderer + notifications) |
cli |
deixis init / uninstall / status / menubar |
Develop
pnpm -r build # build all packages
pnpm -r test # unit tests (hub, shim, hook, menubar, shared)
pnpm --filter @deixis/web dev # dashboard with hot reload (proxies to :3939)
Notes & caveats
- macOS only — the hub auto-starts via launchd; the menu bar needs the free SwiftBar.
- Cost is a gauge, not a bill — on a Max/Pro subscription the
$figure is the equivalent pay-as-you-go API cost, priced from OpenRouter. It's deliberately kept off the menu bar. - Fonts — the dashboard uses Overused Grotesk (with PP Supply Mono for monospace), which are proprietary. The installer copies your own licensed copies locally; the fonts are never committed or shipped.
- Local only — no auth, no remote/cloud, no telemetry leaves your machine.
License
No license chosen yet — all rights reserved by the author until one is added. Built with Claude Code. Not affiliated with Anthropic.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。