Railway yard for your repository ecosystem — visual wiring layer for multi-repo component management with aspect tagging and scenario comparison.
# Scan local clones
cargo run -- scan /mnt/eclipse/repos
# Export JSON for the web UI
cargo run -- export --format json > web/export.json
# Serve the UI
just web-serveOpen http://localhost:801 in a browser, then load ./export.json.
The web/ folder contains a no-build static UI for the graph:
-
interactive layouts (force/grid/radial/group)
-
annotations (text/box/arrow) + export
-
ER mode with crow’s-foot notation
-
accessibility upgrades (keyboard, screen reader, high contrast)
Run just web-serve or just web-serve-port 1803 to preview.
-
Graph + plan fidelity is in place: scan → slot/provider registry → scenario diff → plan + apply with rollback.
-
TUI, CLI, DOT/JSON exporters and the web prototype are stable; the UI now highlights aspect tags, ER mode switching, and accessibility (keyboard, zoom, contrast, screen-reader hints).
-
OPSM is the production umbrella for everything in this stack: Reposystem feeds git-dispatcher/githud/data connectors, which in turn let gitbot-fleet and the rest of the ecosystem deliver everything-everywhere workflows.
-
Documentation is being refreshed: the README/ROADMAP/6scm files (STATE/ECOSYSTEM/META/PLAYBOOK/AGENTIC/NEUROSYM) now capture status, blockers, and next actions for both agents and humans, and the new GitHub wiki pages summarize the developer/platform/layperson story.
|
Note
|
Machine-readable context lives in the six |
-
Docs & community story – finish the GitHub wiki (developer, platform, user, layperson pages), update
README.adoc,ROADMAP.adoc, and the six*.scmfiles with the new opsm/doc/branding narrative, and add ASCII diagrams/pictograms so anyone jumping into this repo understands how it links to git-dispatcher, git-hud, gitbot-fleet, and the other packages (odds-and-sods package manager, git-hud, etc.). -
Opsm awareness – make sure
opsm.toml,Mustfile, and workflow definitions refer to opsm (ccodd-s and sods package manageralias) and treatopsm-uias the central view; add cross-references to the palimpsest-license and consent-aware-HTTP work so marketplace submissions know the fallback paths. -
Accessibility polish – lock in indigo branding, revert stray color changes, keep the high-contrast variants (light + dark) consistent, and audit the CSS/graph view so the snap-to-grid overlay, crow’s-foot notation, annotations, and zoom controls behave reliably across desktop/mobile contexts.
OPSM stack overview
+-------------+
| Reposystem | (graph, scenarios, EOAs)
+------+------+ +-----------------------+
| | Git Dispatcher / OPSM |
| exports +-----------+-----------+
v |
+--------------+ +------v------+ +--------------+
| git-hud UI |<---- telemetry --| gitbot-fleet|<-- orchestrates --+ odds-and-sods |
+--------------+ +-------------+ +--------------+
^ ^
| Opsm/contextualization | Dry-run + manifest + package sources
+-------------------------------------------+You have 50+ repositories. Some depend on each other. Some could use your own implementations instead of external ones. You want to:
-
See the connections between everything
-
Switch between "use theirs" and "use mine" for components
-
Understand security, reliability, supply-chain implications
-
Compare alternative configurations before committing
No tool currently does all of this.
Reposystem treats your repository ecosystem as a railway yard:
┌─────────────────────────────────────────────────────────┐
│ REPOSYSTEM │
│ "Railway Yard View" │
└─────────────────────────────────────────────────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ my-ssg │ │ my-newsroom │ │ my-deploy │
│ [provider] │◄─artifact─┤ [consumer] │─artifact─►│ [consumer] │
│ │ │ │ │ │
└──────────────┘ └───────┬──────┘ └──────────────┘
│
│ runtime
▼
┌──────────────────────────────────────────┐
│ SWITCH POINT │
│ ○ Local (podman) │
│ ● Ecosystem (cerro-torre) ◄── active │
│ ○ Fallback (docker) │
└──────────────────────────────────────────┘
│
▼
┌──────────────┐
│ cerro-torre │
│ [provider] │
└──────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐ │ HYPERPOLYMATH ECOSYSTEM │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ │ │ │ git-hud │◄───────────────┐ │ │ │ (HUD) │ │ │ │ └─────────────┘ │ │ │ │ │ │ │ │ consumes │ source-of-truth │ │ ▼ │ dependency graph │ │ ┌─────────────┐ ┌──────┴──────┐ │ │ │ Forges │ │ REPOSYSTEM │◄─── YOU ARE HERE │ │ │ (GH/GL/BB) │ │ (wiring) │ │ │ └─────────────┘ └──────┬──────┘ │ │ │ │ │ │ consumes │ │ ▼ │ │ ┌─────────────┐ │ │ │ git-seo │ │ │ │ (discovery) │ │ │ └─────────────┘ │ │ │ │ │ │ generates │ │ ▼ │ │ ┌─────────────┐ │ │ │ Metadata │ │ │ │ Artifacts │ │ │ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘
Each repo has slots (things it needs) and may be a provider (things it offers):
┌────────────────────────────────────────────────┐ │ my-newsroom │ ├────────────────────────────────────────────────┤ │ NEEDS (slots): │ │ • container.runtime ──► [podman|cerro-torre]│ │ • static-site.generator ──► [my-ssg|hugo] │ │ • router.core ──► [cadre-router|nginx] │ ├────────────────────────────────────────────────┤ │ PROVIDES: │ │ • (nothing - pure consumer) │ └────────────────────────────────────────────────┘
Connections declare what uses what:
Project A Project B ┌─────────┐ ┌─────────┐ │ │──────── uses ─────────────►│ │ │ │ channel: artifact │ │ │ │ evidence: CI config │ │ └─────────┘ └─────────┘
Select between providers at junction points:
┌─────────────────────────┐
│ SWITCH: runtime │
├─────────────────────────┤
──────────────►│ ○ podman (local) │
│ ● cerro-torre (eco) │──────────►
│ ○ docker (fallback) │
└─────────────────────────┘
Flip views to see different concerns:
┌─────────────────────────────────────────────────────────────────────────────┐ │ ASPECT: Security [weight: 3/3] │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ proj-a │──────────►│ proj-b │──────────►│ external│ │ │ │ [1] │ │ [2] │ [!3!] │ [3] │ │ │ └─────────┘ └─────────┘ └─────────┘ │ │ ▲ │ │ │ │ │ ⚠ TRUST BOUNDARY │ │ (crosses with no auth) │ │ │ │ Legend: [n] = security weight, [!n!] = flagged edge │ └─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐ │ REPOSYSTEM v0.1.0 [scenario: baseline] │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ GROUPS │ GRAPH │ │ ─────────────────────────│─────────────────────────────────────────────── │ │ ▼ docs-stack (3) │ │ │ ├─ my-ssg │ ┌───────┐ ┌───────┐ │ │ ├─ my-newsroom │ │my-ssg │◄────►│deploy │ │ │ └─ my-deploy │ └───┬───┘ └───────┘ │ │ ▼ infra (2) │ │ │ │ ├─ cerro-torre │ ▼ │ │ └─ cadre-router │ ┌────────────┐ │ │ ▶ services (5) │ │my-newsroom │ │ │ │ └─────┬──────┘ │ │ │ │ │ │ ASPECTS │ ▼ │ │ ─────────────────────────│ ┌───────────┐ │ │ [●] All │ │cerro-torre│ │ │ [ ] Security │ └───────────┘ │ │ [ ] Reliability │ │ │ [ ] Supply-chain │ │ │ │ │ ├─────────────────────────────────────────────────────────────────────────────┤ │ STATUS: 47 repos │ 23 edges │ 5 groups │ [q]uit [e]xport [s]cenario [?] │ └─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐ │ SCENARIO COMPARISON: baseline ↔ ecosystem-secure │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ BASELINE ECOSYSTEM-SECURE │ │ ──────────────────── ──────────────────── │ │ │ │ proj-a ──► podman proj-a ──► cerro-torre │ │ ~~~~~~ ~~~~~~~~~~~~ │ │ │ │ proj-b ──► docker proj-b ──► cerro-torre │ │ ~~~~~~ ~~~~~~~~~~~~ │ │ │ │ CHANGES: 2 edges modified │ │ │ │ ASPECT IMPACT: │ │ Security: ████████░░ (7/10) → ██████████ (10/10) ▲ │ │ Reliability: ██████████ (10/10) → ████████░░ (8/10) ▼ │ │ Portability: ████░░░░░░ (4/10) → ██████░░░░ (6/10) ▲ │ │ │ ├─────────────────────────────────────────────────────────────────────────────┤ │ [a]pply ecosystem-secure [d]iff details [b]ack │ └─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐ │ WEAK LINK ANALYSIS [aspect: security] │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ⚠ HIGH RISK ITEMS (weight ≥ 3) │ │ ───────────────────────────────────────────────────────────────────────── │ │ │ │ 1. EDGE: my-newsroom → external-api │ │ Reason: Crosses trust boundary without authentication │ │ Evidence: src/api/client.rs:42 │ │ Centrality: HIGH (blocks 12 downstream repos) │ │ Recommendation: Add authentication layer or replace with internal API │ │ │ │ 2. NODE: legacy-auth │ │ Reason: Single point of failure for 8 services │ │ Evidence: Dependency analysis │ │ Centrality: CRITICAL │ │ Recommendation: Create fallback or migrate to distributed auth │ │ │ │ 3. EDGE: data-pipeline → third-party-etl │ │ Reason: Unvetted supply chain dependency │ │ Evidence: Cargo.toml:15 │ │ Centrality: MEDIUM │ │ Recommendation: Consider forking or alternative │ │ │ ├─────────────────────────────────────────────────────────────────────────────┤ │ Total: 3 high-risk │ 7 medium │ 12 low │ └─────────────────────────────────────────────────────────────────────────────┘
# Using Cargo (Rust CLI)
cargo install reposystem
# Using Deno (library)
deno add @hyperpolymath/reposystem
# From source
git clone https://github.com/hyperpolymath/reposystem
cd reposystem
just build
# Clone via Radicle (decentralized)
rad clone rad:z2GwqZb3PsYKNkBgCbFZB2sEBSP6i# 1. Scan your repos
reposystem scan ~/repos
# 2. View the graph
reposystem view
# 3. Create a group
reposystem group create "docs-stack" --members my-ssg,my-newsroom,my-deploy
# 4. Tag for security review
reposystem tag add my-newsroom --aspect security --weight 2 --reason "External API access"
# 5. View security aspect
reposystem view --aspect security
# 6. Export
reposystem export --format dot > ecosystem.dot
dot -Tsvg ecosystem.dot -o ecosystem.svg| Command | Description |
|---|---|
|
Import repos from local folder |
|
List all repos, groups, edges |
|
Interactive graph view |
|
View filtered by aspect |
|
Create logical group |
|
Create edge between repos |
|
Add aspect tag |
|
Create new scenario |
|
Compare scenarios |
|
Export (dot, json, svg) |
| Layer | Language | Notes |
|---|---|---|
Core data model |
ReScript |
Type-safe, compiles to ES6 |
CLI |
Rust |
Cross-platform, fast |
Runtime |
Deno |
No Node.js/npm |
Config |
Nickel |
Complex configurations |
State files |
Guile Scheme |
STATE.scm, META.scm, ECOSYSTEM.scm |
reposystem/
├── src/
│ ├── importers/ # Repo scanners
│ ├── graph/ # Core data model
│ ├── aspects/ # Aspect tagging
│ ├── scenarios/ # Scenario management
│ ├── export/ # DOT, JSON, SVG export
│ └── cli/ # Rust CLI
├── spec/
│ ├── DATA-MODEL.adoc # Entity specifications
│ └── CONCEPTS.adoc # Mental model
├── STATE.scm # Project state
├── ECOSYSTEM.scm # Ecosystem position
├── META.scm # Architecture decisions
├── PLAYBOOK.scm # Operational runbooks
├── AGENTIC.scm # AI agent patterns
├── NEUROSYM.scm # Neural-symbolic integration
├── ROADMAP.adoc # f/i staged plan
├── Mustfile # Build recipes
└── justfile # Development tasksPMPL-1.0-or-later. See LICENSE.txt.
See CONTRIBUTING.adoc.