RepoMan is a multi-model “agent council” that can ingest GitHub repos into Elasticsearch, score repo health, and (optionally) run a debate-to-consensus pipeline before making code changes.
GitHub -> ingest -> Elasticsearch -> FastAPI -> dashboards
|
+-> agent council (audit -> debate -> execute -> validate) (WIP)
The Python distribution name is repoman-ai (the module/CLI is still repoman).
There is an unrelated repoman package on PyPI, so this project uses repoman-ai to avoid collisions.
From a git checkout:
pip install -e ".[dev]"
repoman --helpIf/when published to PyPI:
pip install repoman-aiIf you already have a different repoman package installed from PyPI, uninstall it first:
pip uninstall repomanIf you see import errors or unexpected CLI behavior after installing, double-check that you don’t still have an unrelated repoman package installed.
Works today
- Ingest GitHub repos/issues/PRs into Elasticsearch (
repoman es ingest) - Repo health scoring + dashboards backed by Elasticsearch
- A multi-agent consensus loop (requires LLM API keys)
Entry points (stable vs experimental)
- Stable:
repoman es setup,repoman es ingestrepoman serve+/api/search/*,/api/dashboard/*
- Experimental:
repoman audit,repoman transform(LLM-backed; sandbox/validation is still evolving)
Roadmap / WIP
- Make the 7-phase “transform and ship fixes” flow reproducible and safe by default
- Stronger sandboxing + least-privilege GitHub token guidance
- More first-class “repo portfolio” views (org-level insights, cross-repo duplicate detection, etc.)
Elasticsearch is the system-of-record for RepoMan because it supports:
- Full-text search across repos, issues, and PRs (filters, aggregations, faceting)
- Vector search (dense vectors) for semantic similarity
- Dashboards/analytics for “repo health” scoring and portfolio-level views
- Copy
.env.exampleto.envand setREPOMAN_GITHUB_TOKEN. - Start the stack:
make docker-up- Create indices (idempotent):
repoman es setupOnce your .env is configured, you can run:
make demoTo ingest PitCrew instead:
make demo-pitcrewmake demo-pitcrew is a fixed preset (PitCrew + --issues-limit=200), so it can take longer than make demo.
If your docker-compose.yml service running the CLI isn't named api, override it:
make demo COMPOSE_API_SERVICE=backendmake demo will bring up the Docker Compose stack, create the Elasticsearch indices, and ingest + analyze this RepoMan repo. After it completes:
This flow does not require LLM API keys.
- API is at
http://localhost:8000 - Frontend is at
http://localhost:5173
To stop the stack:
make docker-downAfter ingesting, the core indices/data stream are:
repoman-repositoriesrepoman-issuesrepoman-analysis(data stream)
You can explore these directly in Kibana / Elastic Cloud, or use the built-in API dashboard endpoints (see below).
# Ingest a single repo
repoman es ingest https://github.com/wildhash/RepoMan --analyze
# Or ingest by user/org (top N most recently updated)
repoman es ingest wildhash --limit 10 --analyze
# Optional: raise the per-repo issues/PRs cap (default: REPOMAN_GITHUB_ISSUE_INGEST_LIMIT, env default 300)
repoman es ingest wildhash --limit 10 --issues-limit 1000 --analyze
# Or ingest via GitHub search
repoman es ingest "language:python stars:>1000 vector database" --limit 10The FastAPI server exposes Elasticsearch-backed endpoints:
# Full-text repo search
curl "http://localhost:8000/api/search/repositories?q=agent&language=Python"
# Full-text issue search
curl "http://localhost:8000/api/search/issues?q=timeout&repo_full_name=wildhash/RepoMan"
# Semantic repo search
curl -X POST "http://localhost:8000/api/search/semantic/repositories" \
-H 'content-type: application/json' \
-d '{"query":"vector search"}'
# Dashboards
curl "http://localhost:8000/api/dashboard/repo-health"
curl "http://localhost:8000/api/dashboard/top-languages"