English | 繁體中文
An agent-first local development workbench. spekterm hosts Claude Code sessions for each repository in a single window, and puts an OpenSpec-aware side panel right next to them — so you can drive your agents and read the change they're working on without opening an IDE.
Website and documentation: spekterm.com — the user guide lives at spekterm.com/docs.
Status: early. Builds are available for Linux (x86_64) and for macOS on Apple Silicon; Windows and Intel Macs are not supported yet. Auto-update is not available yet, and the macOS build is not notarized by Apple (it is signed ad hoc — see macOS).
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 — any number of repositories in one window, a global session for everything else.
- Real terminals —
claudeand your shell in real ptys, several per repository; sessions survive a restart and can be hibernated. - OpenSpec side panel — the change a session is working on, its artifacts and tasks, browse, graph, and timeline, worktrees included.
- Conversation view, inbox, and handoffs — read an agent as messages; Slack mentions become inbox items; agents can hand work to another repository.
Everything is described in the documentation, including keyboard shortcuts, troubleshooting, and what spekterm connects to.
- Linux x64 with
libfuse2(needed to run AppImages; Ubuntu 22.04+ no longer installs it by default). Without it the AppImage fails withdlopen(): error loading libfuse.so.2; run it without FUSE instead:./Spekterm-<version>.AppImage --appimage-extract-and-run. - Or macOS 12 (Monterey) or later on Apple Silicon. Tested on macOS 13 (Ventura).
- 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>.AppImagespekterm keeps its data in ~/.config/Spekterm.
Download the latest Spekterm-<version>-arm64.dmg from the
Releases page, open it, and drag Spekterm to
Applications. That is the install; there is no install:desktop on macOS.
- First launch. The app is not notarized (that needs a paid Apple Developer ID); it is signed ad hoc, so macOS blocks it as coming from an unidentified developer. On macOS 14 and earlier, Control-click (right-click) the app in Applications → Open → Open; or try to open it, then System Settings → Privacy & Security → Open Anyway. On macOS 15 and later the Control-click route is gone: try to open it once, then System Settings → Privacy & Security → Open Anyway, and confirm with your password. This happens once per installed version.
- "Spekterm is damaged and can't be opened." Remove the quarantine flag, then open it again:
xattr -dr com.apple.quarantine /Applications/Spekterm.app. - Privacy prompts name Spekterm. macOS attributes to spekterm the prompts caused by programs running in its sessions — an agent reading under your home directory may trigger prompts for Calendars, Photos, Contacts, Reminders, Desktop, Documents, or Downloads. Denying them is safe unless one of your repositories lives in that protected place (a repository in Documents needs Documents access).
- Updates. Each build is a new identity to macOS, so after installing a new version macOS may ask again for permissions you granted before, including those privacy prompts.
- Data lives in
~/Library/Application Support/Spekterm. - Closing the window ends every session (asking first if any is running) but leaves spekterm running
in the Dock, as Terminal and iTerm2 do; click the Dock icon to get the window back with the sessions
restored as dormant. While it runs without a window, the inbox and the Slack check (every five minutes,
if configured) keep running.
Cmd+Qasks like closing the window; quitting from the Dock, logging out, or shutting down does not ask about running sessions (it still asks about unsaved files).
Known limitations on macOS: restored shells restart in their folder, not their last directory; the status
bar does not show the focused session's working directory or git state; idle shells are never hibernated
automatically (hibernating by hand works); the font setting offers only the system default monospace
font; Ctrl+↑ / Ctrl+↓ are taken by Mission Control and App Exposé in macOS's default settings (turn
them off in System Settings → Keyboard → Keyboard Shortcuts → Mission Control); there is no Cmd+W —
close a session with Ctrl+Shift+W. See the install guide.
You'll need Node.js 22 (see .nvmrc). The first packaging needs network access: it downloads
the Electron binary.
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.
Building the macOS artifact needs a Mac. npm run dist:mac builds a release: it refuses to run unless the
checkout is a clean release commit (chore(release): <version>), then runs npm ci, builds, verifies the
Electron archive against a pinned checksum, and packages release/Spekterm-<version>-arm64.dmg. It needs
network access for the Electron archive.
npm run dist:mac # at a release commit → release/Spekterm-<version>-arm64.dmg
npm run build && node scripts/package-mac.mjs # a trial build at any other commit — not a releaseA trial build is not a release: its Settings → About reports uncommitted changes, if there are any.
Where GitHub's Electron download is too slow, point ELECTRON_MIRROR at a mirror (for example
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/). It applies to npm ci / npm install as well
as to packaging, and the pinned checksum still applies.
- spekterm.com/docs — the user guide, in English and Traditional Chinese.
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.
