oll.am · Night Handover · 2026-07-03

Both Products, One Engine: write.oll.am

The night shift converged humaniz and specview onto the shared writing engine. humaniz shed its backend entirely; specview's text-ops moved over; the engine's API got hardened. One thing gates "fully working" — a Groq rate limit only you can lift. Everything below is on branches or merged; nothing was deployed while you slept.

The headline

humaniz.me is now frontend-only and LIVE in production — Coolify auto-deployed the merge; it has no backend, and calls 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.

What shipped — with evidence

WorkWhereStateEvidence
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

The shape now

humaniz.me specview.dev (frontend only) (frontend + residual spec-service) │ │ text verbs │ spec-gen pipelines, │ /api/write/* │ /api/write/* │ project data, coherence ▼ ▼ ▼ (STAYS — stateful/domain) ┌─────────────────────────────────┐ ┌──────────────────┐ │ write.oll.am (oll-write) │ │ specview backend │ │ rewrite · improve · clarify · │ │ (its own DB + │ │ spec · draft · expand · … │ │ git store) │ │ 13 verbs · Core-JWT gated │ └──────────────────┘ └───────────────┬─────────────────┘ ▼ X-Service-Token model.oll.am (oll-model gateway) ──► Groq / Ollama / Claude auth/billing/email for both ──► core.oll.am

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.

The one blocker — yours to lift (≈2 min)

Live rewrites 502 because the deployed 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.

Your queue — gated actions, in order

#ActionHow
1Lift the Groq limit → makes write.oll.am reliableCoolify → oll-model → env GROQ_MODEL=llama-3.1-8b-instant (or rotate key) → redeploy
2Promote the engine hardening (explicit errors + 8b default) to prodMerge oll-am stage → main for oll-model + oll-write, flip their deploy gates, deploy
3Stop docs redeploying backendsCoolify → 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.
4Verify humaniz liveAuto-deployedCoolify already redeployed it: humaniz.me/api/write/health200 (new route live), old /api/v1/health404 (backend gone). After step 1, open humaniz.me/editor and run a rewrite → expect a clean result.
5Deploy specview#130 mergedPR #130 is merged. Deploy specview; set its backend env WRITE_SERVICE_BASE_URL=https://write.oll.am; verify a verb live (after step 1).

Then — the clean, verified state you asked for

Both products live on 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.

oll.am · night handover · 2026-07-03 · humaniz #18 merged · oll-am #69/#70/#71 merged→stage · specview #130 open
All work on branches or stage; nothing deployed to production without you.