English | 繁體中文
An agent-first local development workbench. spekterm hosts one Claude Code session per repository in a single window, and puts an OpenSpec-aware side panel right next to it — so you can drive your agents and read the change they're working on without opening an IDE.
Status: early, and Linux only.
0.2.1is the first published release. macOS and Windows builds, auto-update, and code signing are not available yet.
Running several agents at once usually means a stack of terminal tabs and an editor you switch to just to read the spec. spekterm's value over "four terminal tabs" is the side panel: it understands OpenSpec — the change a session is working on, its artifacts, its tasks, and its specs — and follows along as the agent writes to disk.
Workspace
- Add any number of folders; reorder them, pin the ones you use most.
- A global session that belongs to no repository, for everything else.
Terminals
- Real terminals (
node-pty+ xterm.js with WebGL), several sessions per repository, git worktrees included. - Sessions survive a restart:
claudesessions resume their conversation, shells respawn in their last working directory with the previous screen replayed. Sessions you don't look at stay dormant until you do. - Agent sessions can switch between the terminal and a conversation view. The view is built from the agent's own transcript and hooks — never by scraping the screen.
OpenSpec side panel
- Follows the change the focused session is working on: one tab per artifact, task progress always
visible, spec deltas marked
ADDED/MODIFIED. - Browse specs and changes (active and archived), including changes that live in other git worktrees.
- Full-window dependency graph and timeline, shared with spek.
- Jump between specs, changes, and the underlying files;
Ctrl+Pfor quick open; one click to ask the agent to continue the change.
Files
- File tree that updates as files change on disk, Markdown rendering, syntax highlighting (Monaco), editing, and file operations.
Inbox and handoffs
- Slack: when someone mentions you, it becomes an inbox item. You read it and choose the folder before any session is opened.
- Agent handoffs: an agent can hand work off to another repository in your workspace. spekterm opens a session there and sends the first prompt; the child session remembers its parent, reports back when it's done, and you get a notification.
Built to render untrusted content
- The UI can only address files inside the folders you added, and every filesystem check runs in the main process.
- A strict Content-Security-Policy and a navigation guard keep repository content and terminal output from running script or taking over the window.
- Linux x64 with
libfuse2(needed to run AppImages; Ubuntu 22.04+ no longer installs it by default). - Claude Code (
claudeon yourPATH) for agent sessions. spekterm runs the real CLI with your own subscription — it never asks for an API key.
Download the latest Spekterm-<version>.AppImage from the
Releases page, then:
chmod +x Spekterm-<version>.AppImage
./Spekterm-<version>.AppImageYou'll need Node.js 22 (see .nvmrc).
git clone https://github.com/spekhq/spekterm.git
cd spekterm
npm install
npm run build && npx electron-builder --linux # → release/Spekterm-<version>.AppImage
npm run install:desktop # → ~/.local/bin + your applications menuinstall:desktop can be re-run while spekterm is open; the running app keeps working. To remove it,
run npm run uninstall:desktop.
| Shortcut | Action |
|---|---|
Ctrl+Tab / Ctrl+Shift+Tab |
Next / previous session in the current rail item |
Ctrl+↓ / Ctrl+↑ |
Next / previous rail item |
Ctrl+T |
Open the new-session menu |
Ctrl+Shift+W |
Close the focused session |
Shift+↓ / Shift+↑ |
Move the selected repository up / down the rail |
Shift+→ / Shift+← |
Move the focused session along the tab bar |
Ctrl+P |
Quick open (when the side panel has focus) |
Ctrl+Shift+C / Ctrl+Shift+V |
Copy / paste in the terminal |
Ctrl+S |
Save |
Esc |
Close overlays, dialogs, and menus |
Ctrl+C in a terminal is always an interrupt, even with a selection on screen.
-
The AppImage won't start (
dlopen(): error loading libfuse.so.2). Installlibfuse2, or run it without FUSE:./Spekterm-*.AppImage --appimage-extract-and-run. -
The side panel or file tree stops updating. Your inotify watch limit is probably too low (the error,
ENOSPC, only shows up on the main process's stderr). Checkcat /proc/sys/fs/inotify/max_user_watches; if it's 8192, raise it:echo 'fs.inotify.max_user_watches=524288' | sudo tee /etc/sysctl.d/60-inotify.conf sudo sysctl --system
-
Which build am I running? Settings → About shows the version, build time, and commit.
docs/PRD.md— product requirements, roadmap, and architecture decisions.docs/workspace-mockup.html— the interactive UI mockup.CLAUDE.mdanddocs/lessons/— working notes for contributors and agents, including the failures that were silent the first time.openspec/— specs and the full history of changes.
Much of the existing documentation is in Traditional Chinese; new documentation is written in English.
spek is an open-source OpenSpec viewer. spekterm is a separate
repository that reuses spek's scanning engine and visualizations through two npm packages:
@spekjs/core and
@spekjs/ui.
Contributions are welcome — see CONTRIBUTING.md. Please report security issues privately as described in SECURITY.md.
MIT. Packaged builds also include THIRD_PARTY_LICENSES.txt, which lists every
third-party package bundled into the app and its license.
spekterm is an independent open-source project. It is not affiliated with, endorsed by, or sponsored by Anthropic. Claude and Claude Code are trademarks of Anthropic, PBC. OpenSpec is a separate project by its own authors.