A desktop reader for OpenSpec projects.
Browse changes, trace how requirements evolved, and comment on specs - all from local folders.
SpecLens reads the OpenSpec convention (proposal.md / tasks.md / specs/<capability>/spec.md under openspec/changes/<change-slug>/) straight from folders on your machine. Point it at any repository that uses OpenSpec and it gives you a reading experience the raw markdown can't:
- Changes browser - active and archived changes with tabs for proposal, tasks, design, and spec deltas, plus task-completion progress.
- Timeline - changes laid out chronologically, derived from git history.
- Graph & Flow views - how capabilities, changes, and specs relate to each other.
- Specs & Schemas views - the current state of every capability, and the schema that generated it.
- Authorship - when a project is a git repository, SpecLens derives per-document history (via an embedded git library - no git installation needed) to show who created and last edited each change. Without a repo it degrades gracefully.
- Comments - select any text to attach a comment; highlights persist locally (SQLite) and can be exported as markdown, ready to paste into an LLM conversation.
- EARS keyword highlighting - inline coloring for EARS keywords, RFC 2119 modal verbs, and Gherkin steps (toggle in Settings).
- Spec checks (beta) - deterministic, local-only linting of changes and specs: missing documents, malformed EARS/Gherkin blocks, empty or duplicated requirements, RFC 2119 misuse, ambiguous wording. Findings render as IDE-style underlines with hover diagnostics, plus a dedicated Checks view (groupable by change or check type), a scoped results panel, and severity badges across the app. No LLM involved; everything is explainable and reproducible. Toggle in Settings, with an opt-in for archived changes.
- Reader comforts - minimap with table of contents, document stats and reading time, search palette, Mermaid diagram rendering, zoom, light/dark theme.
- Local AI summaries (optional) - an on-device model summarizes the whole project and individual documents for reviewers, streamed into a side panel with links back to the specs. Five curated models downloaded on demand, any llama.cpp-compatible GGUF you import, or your local Ollama library. Inference never touches the network.
Everything is local. No accounts, no GitHub integration, no telemetry - SpecLens only reads the folders you add, and the only network calls it can make are the AI model download you explicitly start and a once-a-day new-version check (which you can turn off in Settings).
Click through for the full 2-minute demo.
Homebrew (macOS, Apple Silicon):
brew install --cask dansreis/tap/speclensUpdating later is the usual brew flow - the cask tracks every release automatically:
brew upgrade --cask speclens # or just `brew upgrade` for everythingDirect download: grab the .dmg (or the Linux/Windows build) from Releases and drag SpecLens to /Applications. Builds are signed and notarized, so it opens without any Gatekeeper warnings.
Then click Add repository in the sidebar and pick any folder containing an openspec/ directory.
No OpenSpec project at hand? Clone openspec-examples - two fictional products with a full year of spec-driven git history (proposals, specs, ADRs, tasks, playbooks) - and point SpecLens at either project folder. It's the same data the demo and screenshots above show.
Requires pnpm and the Tauri 2 prerequisites (Rust toolchain).
pnpm install
pnpm tauri dev # native desktop window
pnpm dev # browser only, at http://localhost:1420| Command | What it does |
|---|---|
pnpm build |
tsc && vite build |
pnpm typecheck |
tsc --noEmit |
pnpm test |
Vitest unit tests |
pnpm check |
Biome lint + format check |
pnpm format |
Biome auto-format |
Tauri 2 (Rust) · React 19 + TypeScript + Vite · MUI + Emotion · Zustand with SQLite write-through persistence · react-markdown.
src/
├── App.tsx # top-level layout: sidebar | header + content + comments
├── views/ # overview, changes, checks, specs, schemas, folder, graph, flow, timeline
├── specs/ # change viewer, markdown rendering, minimap, stats, spec-check panel
├── comments/ # comments panel + selection-to-comment
├── repos/ # repository switcher + add-repository flow
├── sidebar/ # navigation, settings, theme toggle
├── search/ # search palette
├── store/ # Zustand stores + SQLite bootstrap
└── lib/ # loaders, spec-check lint engine, stats, highlighting
src-tauri/ # Rust shell: repo walking, git2 authorship, signatures, local AI
CLAUDE.md has deeper architectural notes; docs/ROADMAP.md tracks what's missing; RELEASE.md describes how releases are cut.
Apache 2.0 - note that the license does not grant rights to the SpecLens name and logo.








