Design docs for the platform subsystems that make Telemachus a team platform rather than a single-user workspace, plus the Localization flagship that proves the platform can build real tools. These are proposals with data shapes and contracts for review — concrete enough to build from, with the genuine policy forks flagged Decisions to confirm in each doc.
| Doc | Subsystem | One line |
|---|---|---|
| rbac-and-teams.md | RBAC & Teams | Who exists, what they may do, whose data is whose. |
| quotas.md | Quotas | What is metered per user/team, and the limits. |
| ai-queue-and-concurrency.md | AI workload scheduler | Admission, placement & concurrency caps — a workload queue (SLURM/k8s-style), not a message bus; local now, federation-ready. |
| localization.md | Localization | i18n top-to-bottom + a manager tool (extract → team-complete → CI-gate); English at launch, ja/nl/es-419 built by the tool. |
| multi-tenancy.md | Multi-tenancy | Many companies on one instance, behind a flag: an org above the team, a superadmin tier above the org admin, an org gate at step 0 of every check. (Operators: ../ops/multi-tenancy-runbook.md.) |
| workflow-engine.md | Workflow engine | Plugins that process in steps: a public data spec as the contract,
define-workflow as the Racket authoring surface, every step
a scheduler job. (Operators: ../ops/workflow-engine-runbook.md.) |
| brand/ | Brand | The Mentor mark — direction 02 of the nine-direction identity study: an arched helm whose two eyes are an owl's and whose gold brow bar over the nasal guard is a T. SVG assets, palette, type and usage rules. |
| document-repository.md | Document repository | Binary documents of any format, team access control with creator-set
visibility, exposed as an S3-compatible API; content-addressed bytes
behind a plugin seam (rs3 local). (✅ Built, slices
49–55 — including content search and the documents fold. Operators: ../ops/document-repository-runbook.md.) |
| saas-onboarding.md | Onboarding / SaaS | Provision a per-tenant instance seeded with exactly one owner (signup / subscription / VM launch); operator-vs-owner split, magic-link activation. |
| beta-onboarding-experience.md | Beta onboarding | Skinnable, admin-configurable pre-sales lead capture; core =
mechanism, plugin = presentation; extensible attributes
model + a token-themed render contract. |
| documentation-generation.md | Documentation generation | Generate the reference (tools, workflows, permissions, API, plugins)
from the source of truth; commit it, drift-gate it in CI, and make its
prose a doc. namespace the Localization Manager translates.
Forces a declarative route table and permission descriptions.
(Decided 11 Sep 2026; ✅ built, slice 60 —
docs/reference/, drift-gated.) |
| knowledge-graph.md | Knowledge Graph | Entities and relations extracted from the team's documents, every
fact traceable to a document version; visibility inherited from the
source via can?; extracted by a workflow, queried through
search, an agent tool and a tab. (Decided 11 Sep 2026; ✅ built,
slice 61.) |
| document-sharing.md | Document sharing | Three capabilities (view / edit / manage) over the grants table that already exists; team principals inside an org; expiring grants; derived documents inherit at creation. (Decided 12 Sep 2026; ✅ built, slices 56 and 59 — including the share dialog and "Shared with me".) |
| document-workflows.md | Document workflows | Uploads that trigger processing — one seam inside
repo-put! covering console, shim and S3; runs as the
uploader; extract → fields (schema-validated) → form → translations,
every output a repository document with provenance. The
first-user path. (Decided 12 Sep 2026; ✅ built, slices
57–59 — the tools, the doc-pipeline plugin, "Run
workflow…", upload triggers (S3 included), the Automations card,
"Processed by", DOCX rendering, and the invoice scenario in the e2e
gate.) |
| pull-executors.md | Pull-model executors | Inference hosts that come to the work: a worker claims jobs from the
existing jobs table over HTTP with a scoped worker token,
holds a lease with heartbeats, posts the result; capability matching at
claim; infer.chat as the first remote kind so every
model-using tool works unchanged; per-org executors (TEN‑2e).
(Decided 15 Sep 2026; ✅ built, slice 66 — issue #15.) |
| nix-packaging.md | Build & deploy (toolchain, not a platform subsystem) | ✅ Built. Reproducible nix develop /
nix build / nix run; retires the
brew+PLTCOLLECTS ritual and unlocks live Postgres
testing. |
request ─▶ RBAC check ─▶ quota check ─▶ scheduler admission ─▶ executor slot ─▶ model
(may?) (budget?) (place? fair? depth?) (local now;
remote later)
└──────────────── audit_log (every decision) ─────────────────┘
AuthzService,
QuotaService, Scheduler) that any
backend implements; refimpl/racketmaximus is the reference
implementation. Frontends and alternative backends target the contract,
not the Racket code.features
registry, §RBAC). Enforcement decisions and management actions write to
a shared audit_log.text, int, timestamp,
json) — no SQLite-only or Postgres-only constructs — so the
SQLite→Postgres move stays a db-kit backend swap.run-agent's injected effects are the enforcement seam: the
#:llm effect is wrapped by the governor + token meter; the
#:exec effect is wrapped by the RBAC tool-permission check
+ tool-quota meter. The pure spine is untouched — this is exactly what
the injected-effects design was for.Team is the tenancy boundary, and above it sits an
org (a company). Every deployment has at least one org;
TELEMACHUS_MULTITENANT decides whether it may have
more.
instance:*) runs the instance; each company's org
admin (org:*) runs only its own. This is decision
TEN‑2, which supersedes TEN. See multi-tenancy.md.The hosted offering can now serve different legal entities either way: as one isolated instance per tenant (saas-onboarding.md), or as several orgs on one instance. The two compose — a provisioned instance is just a deployment with the flag off.
audit_log are referenced by every doc; they may earn a
short dedicated spec.CLAUDE.md; a consolidated
design doc is owed (see the FSD).All the choices needed to start building — with recommendations and a decision log — are compiled in decisions.md.
Every design in the table above is built, except where a row says otherwise. The generated reference for what exists is under ../reference/. The checkboxes in ../FeatureRequirements.md track it.