Skip to content

Repository management and organization system for multi-repo development workflows

License

Notifications You must be signed in to change notification settings

hyperpolymath/reposystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

49 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

License: PMPL-1.0 Palimpsest

Reposystem

Implementation Phase

Railway yard for your repository ecosystem β€” visual wiring layer for multi-repo component management with aspect tagging and scenario comparison.

Quick Start

# 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-serve

Open http://localhost:801 in a browser, then load ./export.json.

Web UI (Prototype)

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.

Where We Are Now

  • 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 .scm files (STATE.scm, ECOSYSTEM.scm, META.scm, PLAYBOOK.scm, AGENTIC.scm, NEUROSYM.scm). Agents should read them before mutating the graph so they know the current completion, blockers, and the OPSM/doc narrative.

Next Up for Documentation + OPSM

  1. Docs & community story – finish the GitHub wiki (developer, platform, user, layperson pages), update README.adoc, ROADMAP.adoc, and the six *.scm files 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.).

  2. Opsm awareness – make sure opsm.toml, Mustfile, and workflow definitions refer to opsm (cc odd-s and sods package manager alias) and treat opsm-ui as the central view; add cross-references to the palimpsest-license and consent-aware-HTTP work so marketplace submissions know the fallback paths.

  3. 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
                       +-------------------------------------------+

The Problem

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.

The Solution

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]  β”‚
                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Ecosystem Position

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         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  β”‚                                  β”‚
β”‚                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                  β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Core Concepts

1. Repos as Yards

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)                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2. Edges as Tracks

Connections declare what uses what:

    Project A                              Project B
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚         │──────── uses ─────────────►│         β”‚
   β”‚         β”‚     channel: artifact      β”‚         β”‚
   β”‚         β”‚     evidence: CI config    β”‚         β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3. Switches as Points

Select between providers at junction points:

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚     SWITCH: runtime     β”‚
                    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
     ──────────────►│  β—‹ podman (local)       β”‚
                    β”‚  ● cerro-torre (eco)    │──────────►
                    β”‚  β—‹ docker (fallback)    β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

4. Aspect Tagging

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                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Mock UI: TUI View

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  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 [?]    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Mock UI: Scenario Comparison

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  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                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Installation

# 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

Quick Start

# 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

Commands

Command Description

reposystem scan PATH

Import repos from local folder

reposystem list

List all repos, groups, edges

reposystem view

Interactive graph view

reposystem view --aspect NAME

View filtered by aspect

reposystem group create NAME

Create logical group

reposystem edge add FROM TO

Create edge between repos

reposystem tag add TARGET

Add aspect tag

reposystem scenario create NAME

Create new scenario

reposystem scenario diff A B

Compare scenarios

reposystem export --format FMT

Export (dot, json, svg)

Technology Stack

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

Project Structure

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 tasks
  • git-hud β€” HUD for forge interaction

  • git-seo β€” Repository discoverability

  • RSR β€” Standards this enforces

License

PMPL-1.0-or-later. See LICENSE.txt.

Contributing

OPSM Core
  |
  v
reposystem (graph/context source for OPSM ecosystem views)

About

Repository management and organization system for multi-repo development workflows

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 3

  •  
  •  
  •