— Operations —
Installation
Clone the repository, configure the environment, run the stack.
Last revised · V MMXXVI
Marsovius runs as a small fleet of Docker containers. A clean clone of the platform repository is enough to bring it up on a laptop, a workstation, or a single server.
The clean clone
git clone https://github.com/Marsovius/marsovius-platform.git
cd marsovius-platform
cp .env.example .env
docker compose up -d --build
Open http://localhost:3010. The default workspace — skymedic — is seeded
on first boot.
What runs
The compose file brings up four containers:
| Container | Role | Port (host) |
|---|---|---|
skygraph-clickhouse |
ClickHouse — lake, raw and mart tables | 8123 (HTTP) |
skygraph-api |
FastAPI — the platform's HTTP surface | 8100 |
skygraph-sync |
Sync daemon — runs Hermes connectors | none (host network) |
skygraph-ui |
nginx — serves the built UI, proxies /api/* |
3010 |
Container names still carry the skygraph- prefix — the repository's
working directory predates the Marsovius rebrand. The product name is
Marsovius; the container rename lands in a future release.
Environment
The .env.example file ships with the working defaults. Edit it before
first boot. The variables that matter:
ODOO_PG_*— the source Postgres database (read-only).META_PG_*— the platform's own metadata database (marsovius_meta, name still in transition fromskygraph_meta).CLICKHOUSE_*— the lake.localhost:8123by default.API_SECRET_KEY— change this in production.ANTHROPIC_API_KEY— required by Pythia. Without it,/api/v1/aip/*returns 503. Every other module operates fine.
UI dev loop
For UI work, run Vite directly. It proxies /api/* to the API container.
cd ui
npm install
npm run dev # vite on :5173
npm run build # tsc + vite build (strict TS)
./node_modules/.bin/tsc --noEmit # type-only check
After UI changes are merged, rebuild and redeploy the container:
cd ui && npm run build && cd .. && docker compose up -d --build skygraph-ui
API and sync
The API and sync services bind the source tree as volumes
(./api:/app, ./sync:/app). Python edits hit the container immediately;
uvicorn runs with --reload. The sync service uses schedule for per-table
intervals and must be restarted to pick up new entries in
sync/config/tables.yml.
docker compose logs -f skygraph-api # follow the API
docker compose restart skygraph-api # after Python changes
docker compose restart skygraph-sync # after tables.yml changes
Verifying
Open http://localhost:3010. The login page expects a user from the
default seed. The bundled skymedic workspace contains a working ontology,
running connectors, and dashboards under Forge.
Where to read next
- Deployment — what the platform supports today, and where it is going.
- Operations — the day-to-day commands.
- The platform's own
CLAUDE.mdfor the contributor's perspective on the same stack.