grove · operator hub
The operator front door for the whole fleet — every platform service and every product, one place. This page is never customer-facing: it's for whoever is running the boxes.
The AI method: portable skills, commands, and templates (business/ + engineering/) plus the fleet strategy in docs/masterplan/. bootstrap.sh copies it into every consumer repo — never symlinks, never product code, never hosted anywhere.
The shared machine room every product deploys through: Gitea (git origin), Dokploy (deploys), Docker registry, Uptime Kuma (monitoring), Zitadel (fleet identity), backups, and the onboarding runbook. Operator-only — product traffic never touches its domain.
School management platform — the flagship. A monorepo of 33 apps (apex, gateway, slate, dziennix, …) on shared packages and one Postgres. Pilots the Zitadel auth rollout (Z1 proven).
Dental Zone — a clinic OS for healthcare. The first native platform tenant: onboarded end-to-end through grove's runbook (staging and prod proven) before the product itself is built. Never touches the legacy deploy path.
The umbrella company site — the public face above all products. Astro static site with the solutions taxonomy (Education / Healthcare), EdGrove & MedGrove pages, blog, and privacy. Future home of the customer account layer.
Moodle 4.5 LMS — the reference app showcasing the white-label learning-management offering. Standard tenant: own moodle database and role on the shared G12 Postgres, Moodle-native auth.
AI component service (Node) — the one tenant still living outside the grove, on Fly.io with MongoDB. Mid-onboarding; the Mongo → Postgres migration is deliberately gated until real users arrive.
Personal portfolio for ertanarslan.net. Retro-onboarded the hard way: the old Django + systemd install was archived and torn down, replaced by a static rebuild shipped through the platform loop.
A reserved name — the brain is already synced in, but no product code exists yet. When it wakes, it onboards through the same grove runbook as everything else.
| container | image | status |
|---|---|---|
| apex-prod-apex-1 | registry.grove-ops.com/grove/apex:prod | Up 44 hours (healthy) |
| apex-prod-apex-api-1 | registry.grove-ops.com/grove/apex-api:prod | Up 44 hours (healthy) |
| beszel-hub | henrygd/beszel:latest | Up 44 hours |
| databliss-web | registry.grove-ops.com/databliss/web:prod | Up 44 hours |
| databliss-wp-app | wordpress:php8.3-fpm-alpine | Up 44 hours |
| databliss-wp-db | mariadb:10.11 | Up 44 hours |
| dziennix-prod-dziennix-1 | registry.grove-ops.com/grove/dziennix:prod | Up 44 hours (healthy) |
| eduhubai-app | eduhubai-moodle:latest | Up 44 hours |
| eduhubai-cron | eduhubai-moodle:latest | Up 44 hours |
| gateway-prod-gateway-1 | registry.grove-ops.com/grove/gateway:prod | Up 44 hours (healthy) |
| gateway-prod-gateway-api-1 | registry.grove-ops.com/grove/gateway-api:prod | Up 44 hours (healthy) |
| gridly-prod-gridly-1 | registry.grove-ops.com/grove/gridly:prod | Up 44 hours |
| gridly-prod-gridly-api-1 | registry.grove-ops.com/grove/gridly-api:prod | Up 44 hours (healthy) |
| grove-beszel-agent | henrygd/beszel-agent:latest | Up 44 hours |
| grove-contact-api-prod | registry.grove-ops.com/databliss/contact-api:prod | Up 44 hours |
| grove-login | registry.grove-ops.com/grove/grove-login:prod | Up 8 hours (healthy) |
| grove-matchrondo-prod-matchrondo-cron-1 | registry.grove-ops.com/grove/matchrondo-web:prod | Up 8 hours |
| grove-matchrondo-prod-matchrondo-web-1 | registry.grove-ops.com/grove/matchrondo-web:prod | Up 8 hours (healthy) |
| grove-taskflow-prod-taskflow-api-1 | registry.grove-ops.com/grove/taskflow-api:prod | Up 44 hours (healthy) |
| grove-taskflow-prod-taskflow-app-1 | registry.grove-ops.com/grove/taskflow:prod | Up 44 hours |
| grove-zitadel | ghcr.io/zitadel/zitadel:v4.16.2 | Up 44 hours (healthy) |
| local-registry | registry:2 | Up About an hour |
| mento-mento-ai-1 | registry.grove-ops.com/mento/mento-ai:76792336 | Up 44 hours |
| mento-mento-ai-demo-1 | registry.grove-ops.com/mento/mento-ai:76792336 | Up 44 hours |
| mento-mento-demo-1 | registry.grove-ops.com/mento/mento-ai:76792336 | Up 44 hours |
| mento-mento-mongo-1 | mongo:8 | Up 44 hours |
| portfolio-web | registry.grove-ops.com/portfolio/web:prod | Up 44 hours |
| prod-armor-1 | registry.grove-ops.com/grove/armor:prod | Up 44 hours |
| prod-canopy-1 | registry.grove-ops.com/grove/canopy:prod | Up 44 hours |
| prod-cortex-1 | registry.grove-ops.com/grove/cortex:prod | Up 44 hours |
| prod-edsuite-1 | registry.grove-ops.com/grove/edsuite:prod | Up 44 hours |
| prod-feeflow-1 | registry.grove-ops.com/grove/feeflow:prod | Up 44 hours |
| prod-growth-1 | registry.grove-ops.com/grove/growth:prod | Up 44 hours |
| prod-kudos-1 | registry.grove-ops.com/grove/kudos:prod | Up 44 hours |
| prod-lexicon-1 | registry.grove-ops.com/grove/lexicon:prod | Up 44 hours |
| prod-library-1 | registry.grove-ops.com/grove/library:prod | Up 44 hours |
| prod-lobby-1 | registry.grove-ops.com/grove/lobby:prod | Up 44 hours |
| prod-market-1 | registry.grove-ops.com/grove/market:prod | Up 44 hours |
| prod-podium-1 | registry.grove-ops.com/grove/podium:prod | Up 44 hours |
| prod-pulse-1 | registry.grove-ops.com/grove/pulse:prod | Up 44 hours |
| prod-resolve-1 | registry.grove-ops.com/grove/resolve:prod | Up 44 hours |
| prod-slot-1 | registry.grove-ops.com/grove/slot:prod | Up 44 hours |
| prod-vow-1 | registry.grove-ops.com/grove/vow:prod | Up 44 hours |
| slate-prod-slate-1 | registry.grove-ops.com/grove/slate:prod | Up 44 hours |
| slate-prod-slate-api-1 | registry.grove-ops.com/grove/slate-api:prod | Up 44 hours (healthy) |
| uptime-kuma | louislam/uptime-kuma:1 | Up 44 hours (healthy) |
| vault-prod-vault-1 | registry.grove-ops.com/grove/vault:prod | Up 44 hours |
| vault-prod-vault-api-1 | registry.grove-ops.com/grove/vault-api:prod | Up 44 hours (healthy) |
| workspace-prod-workspace-1 | registry.grove-ops.com/grove/workspace:prod | Up 44 hours |
| workspace-prod-workspace-api-1 | registry.grove-ops.com/grove/workspace-api:prod | Up 44 hours (healthy) |
| container | image | status |
|---|---|---|
| dziennix-staging-dziennix-1 | registry.grove-ops.com/grove/dziennix:develop | Up 13 days (healthy) |
| grove-matchrondo-staging-matchrondo-cron-1 | registry.grove-ops.com/grove/matchrondo-web:staging | Up 17 hours |
| grove-matchrondo-staging-matchrondo-web-1 | registry.grove-ops.com/grove/matchrondo-web:staging | Up 17 hours (healthy) |
| grove-staging-front | nginx:1.27-alpine | Up 3 weeks |
| grove-staging-mailsink | axllent/mailpit:latest | Up 4 weeks (healthy) |
| grove-taskflow-staging-apex-1 | registry.grove-ops.com/grove/apex:develop | Up 2 hours (healthy) |
| grove-taskflow-staging-apex-api-1 | registry.grove-ops.com/grove/apex-api:develop | Up 2 hours (healthy) |
| grove-taskflow-staging-gateway-api-1 | registry.grove-ops.com/grove/gateway-api:develop | Up 2 hours (healthy) |
| grove-taskflow-staging-gateway-app-1 | registry.grove-ops.com/grove/gateway:develop | Up 2 hours (healthy) |
| grove-taskflow-staging-grove-login-1 | registry.grove-ops.com/grove/grove-login:develop | Up 2 hours (healthy) |
| grove-taskflow-staging-workspace-1 | registry.grove-ops.com/grove/workspace:develop | Up 7 days |
| grove-zitadel-pg | postgres:17-alpine | Up 2 months (healthy) |
| grove-zitadel-staging | ghcr.io/zitadel/zitadel:v4.16.2 | Up 2 weeks (healthy) |
| home-staging-home-1 | registry.grove-ops.com/grove/home:develop | Up 2 weeks |
| workspace-staging-workspace-api-1 | registry.grove-ops.com/grove/workspace-api:develop | Up 2 hours (healthy) |
| wp-staging-app | wordpress:php8.3-apache | Up 3 weeks |
| wp-staging-db-1 | mariadb:10.11 | Up 3 weeks (healthy) |
generated 2026-11-11 08:11 UTC