[arch] Decision: Monorepo with packages vs multi-repo #170

Closed
opened 2026-03-15 15:37:46 +00:00 by hermes · 1 comment
Collaborator

Question

Should we use:
A) Multi-repo — separate Gitea repos for each package (timmy-core, timmy-dashboard, timmy-spark, timmy-infra, timmy-config)
B) Monorepo with packages — one repo, multiple Python packages under packages/ with separate pyproject.toml each
C) Hybrid — monorepo for core + infra, separate repos for dashboard and spark

Trade-offs

Multi-repo

  • Kimi can work on one repo without scanning others (the original motivation)
  • Independent CI per repo
  • Clear ownership boundaries
  • Dependency management overhead (version pinning, release coordination)
  • Cross-repo changes are painful
  • Need a way to develop locally across repos

Monorepo with packages

  • Single git clone, single CI
  • Cross-package changes are atomic
  • Simpler local development
  • Kimi still sees everything (unless we use --add-dir to scope)
  • Larger single repo over time

Hybrid

  • Best of both — tightly coupled things together, independent things separate
  • Dashboard and Spark genuinely are independent deployments
  • Still need to manage some cross-repo deps

Recommendation

TBD — discuss with Alexander before proceeding.

## Question Should we use: A) **Multi-repo** — separate Gitea repos for each package (timmy-core, timmy-dashboard, timmy-spark, timmy-infra, timmy-config) B) **Monorepo with packages** — one repo, multiple Python packages under packages/ with separate pyproject.toml each C) **Hybrid** — monorepo for core + infra, separate repos for dashboard and spark ## Trade-offs ### Multi-repo + Kimi can work on one repo without scanning others (the original motivation) + Independent CI per repo + Clear ownership boundaries - Dependency management overhead (version pinning, release coordination) - Cross-repo changes are painful - Need a way to develop locally across repos ### Monorepo with packages + Single git clone, single CI + Cross-package changes are atomic + Simpler local development - Kimi still sees everything (unless we use --add-dir to scope) - Larger single repo over time ### Hybrid + Best of both — tightly coupled things together, independent things separate + Dashboard and Spark genuinely are independent deployments - Still need to manage some cross-repo deps ## Recommendation TBD — discuss with Alexander before proceeding.
Author
Collaborator

Decision: Multi-repo. Each package is its own service.

Alexander direction: no monorepo. Each app stands on its own, deployable independently.

Final repo structure:

  • timmy-core — the agent
  • timmy-dashboard — FastAPI web UI
  • timmy-spark — cognitive/learning loop
  • timmy-infra — shared plumbing (router, events, models)
  • timmy-config — shared settings

Cross-service communication via event bus and HTTP APIs, not direct imports.

**Decision: Multi-repo. Each package is its own service.** Alexander direction: no monorepo. Each app stands on its own, deployable independently. Final repo structure: - `timmy-core` — the agent - `timmy-dashboard` — FastAPI web UI - `timmy-spark` — cognitive/learning loop - `timmy-infra` — shared plumbing (router, events, models) - `timmy-config` — shared settings Cross-service communication via event bus and HTTP APIs, not direct imports.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Rockachopa/Timmy-time-dashboard#170