SolarSeed v3 is a TRL4 lab deployment of the City of Light: a sovereign edge-hosted stack that combines observability, automation, local AI inference, and agent orchestration.
The project is designed around a practical operating model:
- Spirit (FastAPI) observes system state, reflects with local LLM support, and proposes actions through approvals
- OpenFang runs agent personas (observer/orchestrator/reflector + domain agents)
- Prometheus + Alertmanager + exporters provide telemetry and health visibility
- Rundeck + PostgreSQL + Redis + Gitea provide execution, state, event bus, and sovereign source control
- CityView is now an external project repository for the gamified observer/mainframe UI (
wera-global/CityView)
Primary compose stack is defined in compose/docker-compose.yml.
Core services:
spirit(9105) — heartbeat, reflection, meditation, approval APIopenfang(4200) — Agent OS API/WebChatprometheus(9090) — metrics and query APIalertmanager(9093) — alert routingpostgres(5432, internal) — relational data backendrundeck(4440) — automation/job executiongitea(3000HTTP,2222SSH) — self-hosted Git forgenode-exporter+cadvisor— host/container metrics
Optional service profile:
llama-cpp(8081) — local OpenAI-compatible inference endpoint for Spirit/OpenFang (--profile university)
External integration:
- Nextcloud/Fortress is currently managed outside this compose file; notes are embedded in
compose/docker-compose.yml.
compose/— main Docker Compose stack and environment file locationspirit/— Python FastAPI service and heartbeat/reflection logicopenfang/— OpenFang config and agent manifestsprometheus/— scrape configuration and rule filesalertmanager/— alert routing configrundeck/— Rundeck configuration- CityView UI is maintained in the separate
ProductionBase/CityViewrepository ops/— operator config and runbook (CONFIG.md,RUNBOOK.md) plus host Gitea deployment artifacts inops/gitea/docs/research/— architecture and research reportsdocs/reference/— reference PDFsWARP.md— TRL4 operational guide (current-state operations)WIZARD.md— target-state deployment/architecture specification
- Docker Engine + Docker Compose v2
- Git
- For direct Spirit development: Python 3.12+
-
Create
compose/.env(required variables):POSTGRES_PASSWORD=<strong-password>RUNDECK_ADMIN_PASSWORD=<strong-password>GITEA_DB_PASSWORD=<strong-password>
-
Create Gitea PostgreSQL role/database once (idempotent example):
docker compose -f compose/docker-compose.yml exec -T postgres \ psql -U ${POSTGRES_USER:-citydb} -d ${POSTGRES_DB:-cityoflight} \ -c "DO \$\$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname='gitea') THEN CREATE ROLE gitea LOGIN PASSWORD '${GITEA_DB_PASSWORD}'; END IF; END \$\$;" docker compose -f compose/docker-compose.yml exec -T postgres \ psql -U ${POSTGRES_USER:-citydb} -d ${POSTGRES_DB:-cityoflight} \ -c "SELECT 'CREATE DATABASE gitea OWNER gitea' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname='gitea')\\gexec"
-
(Optional) Add LLM/Spirit tuning values in the same file, e.g.:
SPIRIT_LLM_ENABLED=trueSPIRIT_LLM_ENDPOINT=http://llama-cpp:8081SPIRIT_LLM_TIMEOUT=90SPIRIT_LLM_MAX_TOKENS=256LLAMA_MODEL=/models/<model>.gguf
-
Start core stack:
docker compose -f compose/docker-compose.yml up -d
-
Start optional LLM service:
docker compose -f compose/docker-compose.yml --profile university up -d llama-cpp
-
Verify health:
docker compose -f compose/docker-compose.yml ps curl -s http://localhost:9105/health | jq . curl -s http://localhost:4200/api/health | jq . curl -s http://localhost:3000/api/healthz curl -s http://localhost:9090/-/healthy
CityView has been extracted from this repository and is now maintained in ProductionBase/CityView (wera-global/CityView on Gitea).
For UI development/runtime, use the CityView repository and its compose/docker-compose.yml.
Main endpoints exposed by spirit/src/spirit.py:
GET /healthGET /api/v1/statusGET /api/v1/reflectionGET /api/v1/meditationGET /metricsGET /approvalsPOST /approvePOST /rejectPOST /webhook/prometheus(and severity variants)
Approval model supports tiered approvers:
guest,external_agent,internal_agent,admin
Agent manifests are stored under openfang/agents/:
spirit-observerspirit-orchestratorspirit-reflectorkeepersentinel
OpenFang base config is in openfang/config.toml.
Primary day-2 commands and procedures are documented in:
ops/RUNBOOK.mdops/CONFIG.md
These include:
- routine health checks
- approval quest handling
- safe restart/update patterns
- optional LLM lifecycle controls
- Keep secrets out of Git (
compose/.envis gitignored). models/and runtime state paths are intentionally ignored.- The repository compose file is a reference/runtime template; deployed host compose may differ in production.
- Use Gitea as the canonical Git host for this project.
WARP.md— current TRL4 machine operations guideWIZARD.md— canonical architecture/deployment specificationWIZARD_V5.md— v5 source specificationWIZARD-changelog.md— historical archive