Vision
What xvii is
A platform you install on your own servers that does the everyday infrastructure work for a developer or a
small team: put a site or an app online, give it a database and secrets, show a branch preview, see
whether it is up, what it is throwing and who visits it, catch a webhook, open a tunnel, send mail, and
route AI requests through one gateway with quotas.
Every piece is useful on its own and better together: a project in id ties a pages site, an app, its
secrets, its monitors, its errors and its analytics into one page in home.
Who it is for
- Its author first. Every service has to earn its place in daily work on xvii.network.
- Then anyone who self-hosts. A person or a team with one or more Linux servers and a domain runs
xvii server install, answers a wizard, and gets the platform on their domain.
- Teams inside an instance. An instance has many teams; teams own projects; servers (nodes) can be
shared between teams with quotas, and a team can bring its own server, the way you would add a
self-hosted CI runner.
Distribution is part of the design from day one: nothing may depend on xvii.network specifics (domain,
servers, tokens). The code stays closed for now; it will be opened later.
Principles
- One stack, strictly. Go for everything that runs; React + Vite + Tailwind 4 + shadcn/ui for every
panel; one CLI. No second language "just for this one service". The phone apps are the one exception:
Swift and Kotlin, as API clients only (ADR 0018).
- One binary per service. A service is a Go program with its panel embedded. No Kubernetes, no
container required to run the platform itself (containers are for user workloads in
apps).
- Fast to use. One command to deploy, one link to share, one place to look. Defaults that are right
for previews: things expire unless kept.
- Immutable releases. A deploy (pages) or a release (apps) never changes; aliases and environments
point at them, so rolling back is moving a pointer.
- Everything has an API, a CLI and MCP tools. The panel is one client of the API, not the only one.
All of them come from one declaration of each operation, in Go (ADR 0027, 0028).
- Small footprint. The whole platform must run comfortably on a 1 vCPU / 4 GB server next to other
software.
- Self-host friendly. Install, update, back up and restore are features with a UI, not chores.
What it will not do
- Not a Kubernetes distribution or a replacement for one at scale. Dozens of nodes, not thousands.
- No billing or public sign-up in the first versions. An instance invites its users. The model must not
make billing impossible later (quotas and usage are tracked per team).
- No multi-region control plane. One control plane per instance; nodes can be anywhere.
- No plugin marketplace. Service templates in
apps cover third-party software.