Skip to content

justi/armillary

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

177 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

armillary

πŸ’Ž Never forget a side project again. Scans your folders, tells you what's rotting, and which forgotten hours are worth reviving.

An armillary sphere is an ancient astronomical instrument β€” concentric rings modeling the celestial sphere, with a fixed center and orbits turning around it. You are the center, your projects orbit around you, and armillary lets you see the whole system at once.

   50-200 projects over years                    What armillary gives you
   ─────────────────────────                     ────────────────────────

   ~/Projects/                                   🧭  armillary next
     acme-dashboard/                                  "what should I work on today?"
     acme-voice-lab/    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
     acme-prototype/    β”‚                   β”‚    πŸ”„  armillary context <name>
                        β”‚     armillary     β”‚        "where was I on this project?"
   ~/projects_prod/     β”‚                   β”‚
     acme-subscriptions/─▢│  scan + index +   │──▢ πŸ”  armillary search "needle"
     acme-side-project/ β”‚   SQLite cache    β”‚        ripgrep across all repos
                        β”‚                   β”‚
   ~/code/              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    πŸ€–  MCP server
     acme-experiments/            β”‚                   Claude Code / Cursor query your repos
     ...                        β”‚
                                β–Ό                πŸ“‹  armillary list
                     status: ACTIVE / STALLED /      terminal table, sortable
                             DORMANT / IDEA
                                                 🩺  armillary pulse
                                                     weekly changes across your portfolio

Status: Alpha. Daily-driver-ready on macOS / Linux.

See it in action

armillary start β€” the dashboard:

armillary dashboard β€” header with scan summary, hero 'N projects calling. One dying.' line, three dominant-number suggestion cards (momentum / zombie / forgotten gold) with sparklines, and a 3-cell status strip

armillary next β€” what should I work on today?

armillary next output β€” yesterday line + three categorized suggestions (acme-dashboard momentum, acme-subscriptions zombie, acme-voice-lab forgotten gold) with sparklines and cd hints

armillary pulse β€” weekly check-in:

armillary pulse output β€” worked-on, went-dormant, and uncommitted-work sections

armillary context <name> β€” instant re-entry:

armillary context acme-subscriptions β€” status, activity sparkline, last session, recent commits, unmerged branches

Your AI coding agent sees the same data through MCP β€” ask Claude Code "what should I work on?" and it calls armillary_next under the hood.

What is this?

armillary is total recall for prolific builders β€” solo developers and creators who accumulate dozens to hundreds of projects over years. Not a dashboard for 5 active projects β€” a memory layer for your entire codebase history.

The daily loop:

armillary next      β†’ "what should I work on?"
armillary context   β†’ "where was I on this project?"
armillary search    β†’ "where is this code across all my repos?"

Your AI coding agent (Claude Code, Cursor) gets the same data automatically via MCP β€” no extra commands needed.

Features

  • Auto-discovers every project in your umbrella folders (git repos + idea folders)
  • Tracks metadata β€” status, branch, commits, work hours, dirty files, README, ADRs, notes
  • Recommends what to work on β€” momentum, zombies, forgotten gold (next)
  • Restores context β€” branch, dirty files, recent commits in sub-second (context)
  • Weekly pulse β€” what changed, what went dormant, what's waiting (pulse)
  • Activity heatmap β€” 12-month contribution view, exportable as a shareable HTML card (card)
  • Searches across ALL projects with ripgrep
  • MCP server β€” your AI agent knows your full project history
  • Launches projects into Cursor, VS Code, Zed, Claude Code, terminal, Finder

Non-goals

armillary is not:

  • A git GUI β€” use Sourcetree / Fork for that
  • An IDE β€” Claude Code / Cursor / Zed already cover that
  • A monitoring tool β€” use UptimeRobot / Sentry for that
  • A cloud service β€” everything stays local, offline-first

Prerequisites

  • Python 3.11+ (managed by uv)
  • Git β€” armillary reads repo metadata through GitPython
  • ripgrep β€” the search backend (brew install ripgrep)

Installation

Not yet published to PyPI. To run from source:

git clone git@github.com:justi/armillary.git
cd armillary
uv sync
.venv/bin/armillary --help

Quick start

# 1. First-run setup: scans ~/ for umbrella folders, runs initial scan,
#    detects Claude Code, configures MCP server.
armillary config --init

# 2. What should I work on today?
armillary next

# 3. Where was I on this project?
armillary context my-project

# 4. Browse β€” dashboard auto-scans on start.
armillary start

Commands

Command What it does
armillary next What should I work on today? Momentum, zombies, forgotten gold
armillary context <name> Where was I? Branch, dirty files, recent commits β€” sub-second
armillary pulse Weekly pulse β€” what you worked on, what went dormant, what's waiting
armillary search "<query>" ripgrep across all projects
armillary list Rich terminal table with --status, --type, --umbrella filters
armillary open <name> Launch project in configured editor (--target cursor/vscode/zed)
armillary archive <name> / activate <name> Mark project done / restore to automatic status
armillary exclude <name> / include <name> Hide / unhide a project across all armillary output
armillary purpose <name> Set or show a project's one-line purpose
armillary share / card Generate shareable tweet / heatmap HTML card
armillary config --init First-run setup: umbrella picker β†’ scan β†’ Claude Code bridge β†’ MCP
armillary scan Full scan of all umbrellas, persist to cache
armillary start Incremental scan + Streamlit dashboard
armillary install-claude-bridge Write compact ~/.claude/armillary/repos-index.md
armillary mcp-serve MCP server (stdio) for AI coding agents

MCP server for AI coding agents

armillary exposes five MCP tools that Claude Code / Cursor can call:

Tool What it does Speed
armillary_next What should I work on today? instant
armillary_context Where was I? Branch, dirty files, recent commits sub-second
armillary_search Exact code search: function names, imports, error messages <10ms
armillary_projects List all projects with path, status, description instant
armillary_pulse What changed in my portfolio this week? instant

armillary config --init auto-configures MCP in ~/.claude/mcp.json. Or manually:

{
  "mcpServers": {
    "armillary": {
      "command": "/path/to/venv/bin/armillary",
      "args": ["mcp-serve"]
    }
  }
}

Privacy

armillary never sends data off-device. Project index, metadata, cache, and config all live on your local disk.

  • No telemetry, no analytics, no external calls
  • All documentation uses symbolic placeholders, never real paths

Development

uv sync --extra dev

# 375 tests covering scanner / metadata / status / cache / config /
# launcher / search / exporter / bootstrap / CLI / MCP / next / context /
# pulse / share / heatmap / transitions / purpose / revenue
.venv/bin/python -m pytest

# lint + format
.venv/bin/ruff check .
.venv/bin/ruff format --check .

CI runs pytest + ruff on Python 3.11 and 3.12.

Architecture

Key design decisions:

  • Three-interface model β€” MCP (primary, invisible) > CLI (daily decisions) > Dashboard (companion)
  • Thin Streamlit UI β€” presentation only, logic in importable services
  • Incremental scan β€” mtime compare, 1–2s vs 20+s full scan
  • SQLite cache β€” drop and rebuild, no migrations (PRAGMA user_version)
  • Sub-second context β€” all git operations local, no network
  • Response safety β€” 20k char cap, preview truncation, compact JSON

License

MIT (see LICENSE)

Releases

No releases published

Packages

 
 
 

Contributors

Languages