Roadmap: Multi-Tenancy Posture and Fleet Provisioning

Gap statement: no tenancy story at all — and a decision before an engineering program

Wikantik is single-tenant per install, deployed on a single Docker host, with no hosted offering. "RAG as a service" implies serving multiple customers. The question is not whether to have a tenancy story but which one: shared-store logical multi-tenancy (deep schema surgery across every table and index) or silo-per-tenant (one isolated deployment per customer, automated into a fleet). This brief argues for the silo posture and defines the fleet-engineering program it implies.

Owner gate: the posture commitment itself is an [OWNER] decision. An agent may draft the ADR with the argument below; only the owner ratifies it. Nothing beyond the cost-floor measurement should be built before ratification.

Market grounding: even the hyperscalers recommend silos for hard boundaries

The strategic read: Wikantik's Docker deployment already is the hard-isolation unit AWS tells enterprises to buy. For a single-maintainer project targeting B2B (not B2C-scale tenant counts), silo-per-tenant converts the biggest architectural liability (single-host, single-tenant) into the compliance-friendly product shape — if provisioning is automated.

Current Wikantik state

Proposed direction

  1. Draft the posture ADR for owner ratification ([OWNER] gate above): silo-per-tenant for hard isolation; shared-store multi-tenancy explicitly out of scope until tenant count demands it.
  2. Tenant-in-a-box artifact: a versioned compose/stack definition (app + PostgreSQL + pgvector + optional Ollama) with one-command spin-up, templated secrets, and health verification.
  3. Fleet control plane (minimal): inventory of tenants, orchestrated rolling upgrades (image pin per tenant), central backup scheduling, per-tenant monitoring scrape into one dashboard.
  4. Shared inference pool: Ollama is the heaviest per-tenant cost; investigate one shared GPU inference host serving many tenant instances with per-tenant rate limits.
  5. Gatekeeper alignment: per-tenant API keys and MCP tokens already exist; ensure they are provisioned/rotated by the control plane, not by hand.

Phase 1 scope and acceptance criteria

First session scope (pre-ratification, measurement only): measure the per-tenant cost floor — idle and loaded footprint of one full stack. No provisioning code.

Measurement phase is done when: a committed script (under bin/ or eval/) reproducibly reports JVM heap under idle/loaded profiles, PostgreSQL size for a reference corpus, dense-index memory, Docker image sizes, and idle CPU — and the numbers are written up beside RoadmapPackagingAndPricing's unit-economics input.

Phase 2 (post-ratification) is done when: tenant-in-a-box spin-up on a clean host is one command; the health-check suite passes against the fresh instance; a smoke IT creates/retrieves a page through the full stack; teardown leaves no residue; and secrets are templated, never committed.

Verify before designing on these

Non-goals

Investigation starting points

See Also