Skip to content

coilysiren/repo-recall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

277 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

repo-recall

"What's the current state of every repo and agent burst on this machine, right now?"

repo-recall is a local hydration layer that joins git (commits, churn, working tree), gh (PRs, issues, deploy status), and Claude Code sessions (~/.claude/projects/) into a single queryable surface served as JSON and over MCP out of the same process.

Two questions, one HTTP call or one MCP tool call:

  • Which sessions touched this repo? ask the dashboard for a repo, get every session with it as cwd.
  • Which repos did this session touch? ask for a session, get every repo it crossed.

Local-only. Binds 127.0.0.1, cache lives in $TMPDIR. Outbound limited to GitHub REST reads for PRs, issues, and deploy status.

Surface

Two artifacts deployed side by side:

  • Rust binary - JSON HTTP on 127.0.0.1:7777 plus an MCP server co-running in the same process. No HTML.
  • React SPA under web/ - static bundle built by Vite, served by Caddy in its own container in production. Consumes the JSON surface above. Hello World stub today; the real card dashboard lands in #144.

Local dev: make watch-all runs cargo-watch on the Rust side and the Vite dev server on the web side concurrently. The Vite dev server proxies /api, /openapi.json, and /mcp to the Rust binary so a single browser origin works.

JSON endpoints

  • GET / - full dashboard projection: repos ranked by composite activity score, recent sessions, recent commits, action-required signals, banner counts.
  • GET /api/action-required - thin action-required list. id = "<repo_id>:<signal>".
  • GET /api/scan-version - single-integer poll target.
  • POST /api/refresh - sync refresh.
  • GET /api/repos/{repo_id}/tickets/{issue_number}/history - per-issue session + commit join.
  • GET /openapi.json - hand-maintained OpenAPI 3.1 description of the surface.

Every JSON response carries ETag: "<scan_version>". Pass If-None-Match for 304 Not Modified between scans.

MCP host

repo-recall runs an MCP server in the same process. For Claude Desktop:

{
  "mcpServers": {
    "repo-recall": {
      "command": "repo-recall",
      "env": { "REPO_RECALL_CWD": "/Users/you/projects", "REPO_RECALL_DEPTH": "4" }
    }
  }
}

Tools: recall_dashboard, recall_repo, recall_session, recall_search, recall_action_required, recall_ticket_history, recall_refresh.

Point an agent at it

Hand the URL or MCP entry to a coding agent. Starter prompts: "work through every repo flagged as action-required", "find dirty trees and commit or discard", "land or delete stale local branches".

Quick start

cargo run
curl http://127.0.0.1:7777/

No config, no wizard. Walks cwd + 4 levels for .git, parses ~/.claude/projects/**/*.jsonl, joins by cwd.

Install via Homebrew

brew tap coilysiren/repo-recall https://github.com/coilysiren/repo-recall
brew install coilysiren/repo-recall/repo-recall
brew services start repo-recall

Logs at $(brew --prefix)/var/log/repo-recall.{log,err.log}. brew services edit repo-recall for custom WorkingDirectory / env vars.

Silencing repos

Drop empty .repo-recall-ignore at the root of a repo cloned for reading. Suppresses all action-required signals. Opt-in.

Env vars

REPO_RECALL_PORT (7777, loopback only), REPO_RECALL_CWD (process cwd), REPO_RECALL_DEPTH (4), REPO_RECALL_COMMITS_PER_REPO (500), REPO_RECALL_CACHE_DIR ($TMPDIR/repo-recall-<port>, wipe-on-schema-change), REPO_RECALL_REFRESH_INTERVAL_SECS (150, 0 disables; per-source overrides via refresh.per_source in the config file), REPO_RECALL_TURN_INDEX_DAYS (30, 0 indexes every session's turns), RUST_LOG.

Privacy

  • Stores metadata + 200-char summary only.
  • Loopback only. Never 0.0.0.0 on shared boxes.
  • Outbound calls: GitHub REST reads for PRs, issues, and deploy status (reuses gh auth, no tokens stored).

See also

Cross-reference convention from coilysiren/agentic-os#59.

About

πŸ§ πŸ“šπŸ” Hydration layer for agent work. Joins OTel spans, git/gh state, Claude Code sessions, and local docs context into one queryable surface (web + MCP).

Resources

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors