{ "phase": "production-live", "version": "0.1.1", "staging": { "status": "running", "namespace": "snapapi-staging", "replicas": 1, "image": "git.cloonar.com/openclawd/snapapi:v0.1.1", "healthCheck": "passing", "ingress": "staging.snapapi.eu (PENDING DNS)" }, "production": { "status": "running", "namespace": "snapapi", "replicas": 2, "image": "git.cloonar.com/openclawd/snapapi:v0.1.1", "healthCheck": "passing", "domain": "https://snapapi.eu", "tls": "Let's Encrypt (valid until 2026-05-20)" }, "blockers": [ "FORGEJO_TOKEN is read-only — cannot push code to repo. Need write:repository scope token", "SSH port 2222 not reachable from k3s-mgr or openclaw VM — deploy key useless without it", "staging.snapapi.eu DNS record not set — cert-manager can't issue TLS cert", "CI/CD pipeline written but untested (can't push to trigger it)" ], "completed": [ "Core screenshot API (POST /v1/screenshot)", "Free signup (POST /v1/signup/free)", "Health check (GET /health)", "SSRF protection (blocks private IPs, metadata, K8s services)", "Browser pool with auto-recycling", "PostgreSQL DB integration (api_keys + usage tables)", "Usage tracking with per-key limits", "Landing page with docs", "Production deployment (2 replicas, HA, anti-affinity)", "Production TLS (Let's Encrypt) on snapapi.eu", "Staging deployment (1 replica)", "Staging ingress (pending DNS)", "Cache-aside key lookup (multi-replica fix)", "CI/CD workflow files (deploy.yml + promote.yml) — ready but untested" ], "notDone": [ "Email verification (signup gives key directly for now)", "Stripe billing integration", "Paid tier management", "CI/CD pipeline (blocked on git push access)", "Staging TLS (blocked on DNS)", "API key recovery flow", "Rate limiting per-key fairness", "Status page", "Uptime monitoring" ], "lastSession": "2026-02-19T10:50:00Z" }