Skip to content

Repository files navigation

SpecLens

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).

Demo

SpecLens demo video

Click through for the full 2-minute demo.

A quick look

Overview dashboard
Overview - specs, changes, and reading time at a glance
Changes browser
Changes browser - active and archived, with task progress
Proposal view
Proposal reading - tabs for proposal, specs, and tasks with git-derived attribution
Comments
Comments - select text to comment; export as markdown for an LLM
Flow view
Flow - how changes touched each capability over time
Graph view
Graph - capabilities, changes, and specs as a network
Timeline view
Timeline - every change laid out chronologically from git history
EARS highlighting
Spec deltas - EARS keywords highlighted, table of contents on the side

Install

Homebrew (macOS, Apple Silicon):

brew install --cask dansreis/tap/speclens

Updating later is the usual brew flow - the cask tracks every release automatically:

brew upgrade --cask speclens   # or just `brew upgrade` for everything

Direct 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.

Development

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

Stack

Tauri 2 (Rust) · React 19 + TypeScript + Vite · MUI + Emotion · Zustand with SQLite write-through persistence · react-markdown.

Layout

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.

License

Apache 2.0 - note that the license does not grant rights to the SpecLens name and logo.

About

A desktop reader for OpenSpec projects - browse changes, trace how requirements evolved, and comment on specs, all from local folders

Topics

Resources

Contributing

Stars

24 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages