MARSOVIVS

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 from skygraph_meta).
  • CLICKHOUSE_* — the lake. localhost:8123 by 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.md for the contributor's perspective on the same stack.