-
Picking the right model per task, letting it decide when to act, and polishing what it generates — three independent levers we pulled to raise conversation quality, and the one rule that ties them together.
-
In a memory/extraction pipeline, an over-cautious model doesn't refuse loudly — it silently drops the sensitive-but-true facts. Why that happens, how neutral-aligned models plus duty-releasing prompts fix it, and the cost twist nobody expects.
-
Two weeks scaling a Nuxt 4 project from 3 to 16 locales. This post is about the concrete craft decisions — which step belongs to Claude Code, which to Codex CLI, why they don't mix, how to recover when two parallel codex writers silently trample each other's directories, and one underlying rule that runs through every translation flow we use: whoever writes, the other reviews.
-
A real migration from "client-side localStorage session + Bearer headers everywhere" to "SSR cookies + a server-side OAuth callback route". The post walks through before/after code, then reconstructs the four pitfalls production exposed (OAuth race, service-role env naming, partial SSR redirect, Playwright × Vue hydration race) — plus the Claude Code main-driver + Codex CLI second-reviewer workflow we used while debugging.
-
Yesterday's post mentioned a `category` column in the schema, but nothing was actually filling it. PR
-
A walkthrough of how we run AI companion memory inside Postgres with pgvector + Voyage embeddings, and why dropping the Mem0 sidecar shrank our engine's resident memory by roughly 5×. Concrete schema, the embed-write-search loop in Rust, and the deployment math behind self-hosting on a shared-cpu-1x machine.
-
We removed Mem0 from eros-engine and rebuilt the memory layer on pgvector + Voyage. This post explains why AI companions need a relationship-shaped memory system, not a generic facts store.
-
First post on EtherFun Lab — a placeholder to validate the theme, typography, and deploy pipeline.