write.oll.am + core.oll.am directly (verified: /api/write/health→200, old /api/v1→404). specview's 8 text verbs migrated to the same engine (880 tests green, PR open). The engine itself was hardened. The one blocker to a live rewrite 200 is the deployed gateway's Groq free-tier rate limit — a two-minute console fix that's yours to make.| Work | Where | State | Evidence |
|---|---|---|---|
| humaniz → frontend-only backend deleted; nginx proxies /api/write/*→write.oll.am, /api/auth|billing|email/*→core.oll.am |
humaniz #18 | Merged→main | tsc clean · 16/16 vitest · frontend-only container proven live (GUI 200, health→write.oll.am 200, /me→core.oll.am 200); localhost proxy relays write.oll.am byte-identically |
| write.oll.am API hardened explicit model-error causes + default model → llama-3.1-8b-instant |
oll-am #71 | Merged→stage | oll-model 49 tests · oll-write 141 tests · both images build · live-curl: unreachable→502 LLM_UNREACHABLE, bad provider→400 LLM_UNKNOWN_PROVIDER |
| specview text-ops → write.oll.am all 8 verbs (incl. brainstorm) forward to the engine; 16 local skill files deleted |
specview #130 | Merged | flake8 clean · 880 backend tests pass · wiring proven e2e: /api/rewrite+/api/brainstorm→200 via real stack (and the LLM_RATE_LIMITED relay path proven) |
| CI/CD deploy scoped docs no longer redeploys core/model |
oll-am #70 | Merged→stage | added path-scoped, flag-gated deploy.yml; root cause identified = Coolify auto-deploy (needs your console change, below) |
| services/write → services/oll-write canonical name; deployed & rewriting |
oll-am #69 | Merged→stage | image built from renamed dir; write.oll.am live, real Groq 200 verified earlier |
humaniz can be fully backend-free because it is pure text-in/text-out. specview cannot — it keeps a residual backend for its stateful, project-scoped work (the multi-step spec-generation pipelines, the git-backed project data layer, the deterministic coherence lint). What left specview's backend: the 8 flat text verbs (→ engine) and auth/billing/email (→ Core, already done). That's the honest end state.
oll-model is hitting Groq's free-tier rate limit (429 Too Many Requests) on the 70B model.Fix (Coolify → oll-model app → Environment): set GROQ_MODEL=llama-3.1-8b-instant (≈30× higher free-tier limits — verified reliable locally) or rotate to a fresh/paid GROQ_API_KEY, then redeploy oll-model. The code default is already 8b-instant (PR #71), but the code default only applies if the env var is unset — if Coolify pins GROQ_MODEL, the env wins, so change it there.
| # | Action | How |
|---|---|---|
| 1 | Lift the Groq limit → makes write.oll.am reliable | Coolify → oll-model → env GROQ_MODEL=llama-3.1-8b-instant (or rotate key) → redeploy |
| 2 | Promote the engine hardening (explicit errors + 8b default) to prod | Merge oll-am stage → main for oll-model + oll-write, flip their deploy gates, deploy |
| 3 | Stop docs redeploying backends | Coolify → per backend app (oll-core, oll-model, oll-write, foto): Automatic Deployment OFF (rely on the new gated deploy.yml) — or scope Watch Paths to each app's dir. Leave site auto-deploy ON. |
| 4 | Verify humaniz live — Auto-deployed | Coolify already redeployed it: humaniz.me/api/write/health→200 (new route live), old /api/v1/health→404 (backend gone). After step 1, open humaniz.me/editor and run a rewrite → expect a clean result. |
| 5 | Deploy specview — #130 merged | PR #130 is merged. Deploy specview; set its backend env WRITE_SERVICE_BASE_URL=https://write.oll.am; verify a verb live (after step 1). |
write.oll.am, rewrites returning 200, no per-product prompt duplication, docs decoupled from backend deploys. That's the green light to start the ollwrite GUI.Not started tonight by design — the mandate was a verified clean base first. iterate (specview's one uncovered op) is intentionally left as specview product logic, not the generic engine; fold into /rewrite only if you ever want it shared.