Projects — one landing, many repos
satelle's web service is adaptive: satelle serve (and the background
service) takes no multi-project flag. The root (/) is always a
connected-projects landing — a launcher listing every registered project —
and every repo, including the one you launched from, is served under its own
path prefix (/<slug>/). A single-repo setup is just the case with one project
on the landing.
The model
/→ the landing. The root is a launcher: one card per project with live story/task/doc counts, plus a panel for adding a project, opening help, and keeping the binary current. It is not any single repo's project page.- Every project →
/<slug>/. Each registered repo — the launch repo ([service].repoin the global config, set bysatelle service install) and every repo added withsatelle workspace add— is served by its own child process behind a reverse proxy at/<slug>/(the slug is derived from the repo's directory name). Each keeps its own database — no shared store, no cross-project bleed. /projectsredirects to/(back-compat for older links).
So adding a project is additive: a new card appears on the landing and the
repo is served at its /<slug>/.
Adding another project to a running service
Use the workspace registry — do not re-run service install:
satelle workspace add /path/to/other-repo
The running service notices the registry change within a few seconds and starts
serving it at /<slug>/, with a fresh card on the landing — no restart.
satelle workspace remove <path> stops serving it; satelle workspace list
shows the registry.
When to use service install vs workspace add
satelle workspace add <repo>— register another project. It appears on the landing and is served at/<slug>/. This is the usual way to grow a setup.satelle service install— install or reconfigure the service itself (port, bind address, and which repo is the launch/working-directory repo). Re-running it with no--repopreserves the saved repo; passing--repo <repo>changes the launch repo. It does not move anything off/— the landing is always at/.
Where settings live
- Global, machine-wide:
~/.satelle/config.toml(override the directory withSATELLE_HOME). Holds[service](port/addr/launch repo),[workspace](the registered repo paths),[agent](the reviewer CLI), and[ui](light/dark theme, shared across repos). Safe to hand-edit. - Per-repo:
<repo>/.satelle/— that repo'ssatelle.toml, itssatelle.db(the source of truth for its stories/tasks/docs), and its authored markdown. Project data never leaves the repo.
Keeping the binary current
satelle update self-updates the installed binary to the latest release
(sha256-verified) and restarts the service. satelle update --check reports
whether an update is available without installing.
Mirrored from satelle’s built-in help. Read it in the binary with
satelle help projects, or see the canonical source in the
satelle repo.