- Rust 92.8%
- TypeScript 3.3%
- Python 1.2%
- Makefile 0.9%
- Shell 0.7%
- Other 1%
|
Some checks are pending
ci / rustfmt (push) Waiting to run
ci / clippy (push) Waiting to run
ci / test (macos-latest) (push) Waiting to run
ci / test (ubuntu-latest) (push) Waiting to run
docker / build (Dockerfile, repo-recall-api) (push) Waiting to run
docker / build (Dockerfile.web, repo-recall-web) (push) Waiting to run
docker / ship (push) Blocked by required conditions
release / release (push) Waiting to run
release / bump-formula (push) Blocked by required conditions
Move the repo-local skill directory from .claude/skills/ to .agents/skills/, the agent-neutral canonical home. The global ~/.claude/skills/ harness aggregation dir is unchanged. Closes #251 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Audit-log: coily://1779370320/AGPEVPDD - coily ops aws sts get-caller-identity Audit-log: coily://1779370321/AGPEVPDG - coily ops aws ssm get-parameter Audit-log: coily://1779370348/AGPEVPGO - coily ops gh api /repos/coilysiren/repo-recall/commits/31a8f5e/check-runs Audit-log: coily://1779433759/AGPE5BDD - coily ops gh issue create |
||
|---|---|---|
| .agents/skills/tooling-autonomous-pickup | ||
| .claude | ||
| .coily | ||
| .github/workflows | ||
| deploy | ||
| docs | ||
| Formula | ||
| scripts | ||
| src | ||
| tests | ||
| web | ||
| .dockerignore | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .trufflehog-exclude | ||
| AGENTS.md | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| cert-and-localhost-mess.md | ||
| CLAUDE.md | ||
| config.example.yaml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| Dockerfile.web | ||
| Makefile | ||
| README.md | ||
| rustfmt.toml | ||
| SECURITY.md | ||
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:7777plus 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.0on shared boxes. - Outbound calls: GitHub REST reads for PRs, issues, and deploy status (reuses
ghauth, no tokens stored).
See also
- AGENTS.md - agent-facing operating rules.
- docs/FEATURES.md - inventory of what ships today.
- .coily/coily.yaml - allowlisted commands.
Cross-reference convention from coilysiren/agentic-os#59.