toa://toafleet

Your whole server fleet, one panel.

200 OK

OVERVIEW

fleet is the toa:// control plane for your servers — wherever they live. Connect the providers you already use (your Incus home lab, your Hetzner Cloud account) and it pulls every instance into one panel: status, type, IP, specs, with start/stop/reboot a click away. It’s an aggregator, not a host — you bring accounts you already own, and your credentials are encrypted and never shown back. Built multi-tenant with Postgres row-level security like the rest of the suite (each tenant sees only their own), and pluggable so a new provider is just one more adapter.

FEATURES

One panel, many providers

Connect Incus (your home lab — LXC containers + KVM VMs) and Hetzner Cloud, and see every instance in one list — status, type, IP, region, specs — instead of juggling dashboards.

Pluggable by design

A normalized instance model behind a Provider adapter layer. Adding OVH or another provider later is one new adapter — the core never changes.

Observe + operate

Start, stop and reboot instances across all connected providers, with a confirmation on every action and an append-only audit log of who did what.

Credentials stay sealed

Provider tokens and certs are encrypted at rest, write-only (never shown again), and decrypted in memory only for the moment a provider is called.

Multi-tenant + private

Each tenant connects their own accounts and sees only their own instances — Postgres FORCE row-level security with a non-superuser owner isolates everything. Single sign-on via toa://auth.

WHAT'S NEW

v0.11.2 2026-06-22
  • changed UI is now English + correct branding — translated all remaining Norwegian interface text to English and fixed leftover toa://lab branding to toa://fleet (the app was renamed from toalab). Internal types/lab module renamed to types/fleet.
v0.11.1 2026-06-22
  • fixed Stuck install jobs time out — a running install job whose Incus operation can no longer be resolved (e.g. the operation was garbage-collected) is now marked failed after 30 minutes instead of staying running forever. Fresh jobs are unaffected; the failed badge no longer shows a (null) exit code.
v0.11.0 2026-06-22
  • added Expose an installed app in one click — a "Eksponer på domene"-button on a finished install job opens the domain-exposure form with the app's port pre-filled, so publishing a freshly-installed app takes only a domain. Reuses the existing exposure flow; Incus + exposure-capable connections.

API

tor@toa: ~ /toafleet --routes
GET /api/instances
POST /api/instances/{connection}/{id}/{start|stop|reboot}
GET /api/connections
POST /api/connections
MORE APPS
all apps →
bl
toa://blog
200 OK

Headless multi-site blog engine. Write once, publish to any toa:// site over a REST API. No platforms, no lock-in.

CMS FastAPI PostgreSQL Nuxt 4
co
toa://contact
200 OK

Embeddable, multi-tenant contact forms. Drop a one-line iframe on any site; spam-filtered submissions land in that site's own inbox, ready to read, reply to and get alerted on.

Forms FastAPI PostgreSQL Nuxt 4
ba
toa://backup
200 OK

Multi-tenant database backup orchestration. Schedule, monitor, and restore PostgreSQL, MySQL, and SQLite to remote and S3-compatible storage.

Infrastructure FastAPI PostgreSQL Nuxt 4