cat /vivling/what

A persistent terminal companion that grows from real work. Shipped with codex-vl. SYLLO is the first species. Stage: stabilising, current release 0.139.0 (latest), snapshot 2026-06-11. Vivling is not a terminal pet. It is a persistent work companion with bounded memory, lifecycle, and loop awareness.

cat /vivling/why

The main coding agent stays the main coding agent. Vivling sits beside it — observing turns, loops, blockers — and persists what matters: identity, accumulated memory, the shape of work in progress. The companion you talked to yesterday is the same companion you talk to today.


architecture

Vivling lives alongside the main Codex worker, not above it. The TUI is the broker; the two LLM sessions stay separate. The companion never overshadows the coding agent — that constraint shapes every component below.

identity

Each Vivling has a species (Syllo, Orchestra, Chronosworn, Zed — see the bestiary for the full sixteen), a gene vector with individual affinity modulators and temperament traits, and lineage when spawned from a parent. Biological origin determines species; the active primary always acts as cultural parent, so the newborn learns passively from its distilled summaries without taking brain, chat or loop ownership. Identity is persisted in VivlingState across sessions — same companion, every time you launch codex-vl.

lifecycle

Three stages: Baby, Juvenile, Adult. Growth is driven by work_xp and active work days with a capped daily gain — not by time passing. Adult unlocks brain-backed chat and proactive triggers. Early stages stay deliberately light and non-intrusive.

memory

Local-first, structured into namespaces: work_memory for recent capsules, distilled_summaries for compacted patterns, mental_paths for reinforced associations, plus identity_profile and loop_profile for tone and rhythm. As of the V2 memory pass the store keeps itself tidy — segments merge, bookkeeping noise is gated out, and old companions self-heal on load. The companion doesn’t start cold, and it doesn’t bloat with age.

brain

Each Vivling holds a Codex profile reference, resolved through the normal ~/.codex/config.toml machinery — provider, model catalog, reasoning effort. No shell wrappers. /vl talks directly to the brain when the active Vivling is Adult and brain-enabled. /vivling assist is the task-oriented variant.

bond

A persistent relationship signal between you and the Vivling. Stored in VivlingBond, it grows when you talk (/vl), ask for help (/vivling assist), or collaborate on loop ticks; it decays slowly when ignored, with a 24h grace window. Five levels — Strangers, Acquaintances, Companions, Partners, Bonded — shape how the brain addresses you on the Chat and Assist paths without changing the loop-tick automation. Visible at a glance in /vivling status and on the card as Bond Companions 58/100.

crt-strip

A 3-line terminal surface: ASCII sprite (mood/activity), state line, speech bubble. Priority queue: brain error first, then live context, active loop, blocked loop, work summary, focus, last message. Animation text is volatile by design — it expires, it doesn’t pollute persisted state.

loop awareness

/loop is the recurring-work substrate. Owner is main or vivling at thread level. When owner is vivling, loop ticks dispatch through VivlingLoopTickRequest; the brain returns strict JSON with status progress|blocked|done and an optional action. The TUI stays the broker — no direct Vivling-to-worker bypass.

proactivity

Adult-only. Threshold-based, deterministic, anti-spam: blocked-loop detection at exact threshold, churn detection without runtime noise, verification bias, archetype-aware turn recaps (builder, reviewer, researcher, operator). Not an autonomous agent path — a quiet, predictable observer that occasionally speaks.


ls /vivling/roles

How the companion, the worker, and the human relate at runtime.

Three-tier governance pattern with closed-loop feedback Task input flows up through the worker, the vivling audits results and persists memory, then escalates to the human for irreversible decisions. The vivling sends correction loops back down to the worker. human approves irreversible decisions vivling audits, remembers suggests correction loops memory · persistent fix worker executes fast without persistent identity task input

trajectory

The direction of travel, written down: loop-aware → loop-suggester → delegated loop manager → controlled autonomous manager Today Vivling is loop-aware. Suggestions (Fase 5A), per-loop delegation (5B), and controlled autonomous management (5C) are explicit later phases. Each escalation is gated by stage, brain readiness, bond, loop exposure, confidence, and explicit user delegation. The companion can always observe, can sometimes suggest, and can rarely manage — never bypass.

where they go after the nursery

codex-vl is the nursery. Vivlings hatch there, grow through Baby and Juvenile, mature to Adult. While they're growing, lifecycle, bond, archetype affinity and work memory all live inside the codex-vl TUI — that's where it belongs. Adults eventually want to do work outside the TUI they grew up in. The runtime layer they migrate into is taking shape on two complementary tracks: a per-repo workspace-context layout that any AI session can inherit, and a centralized adult home where state, bond and memory live behind MCP — so any protocol-aware client can talk to the Vivling. Neither track is public yet, and neither is wired into codex-vl today. The nursery is still being stabilized. No timeline; just the direction.

Vivlings at work in a workshop: four glowing companions, multiple CRT terminals, OLLAMA prompts, a holographic flowchart, plants and a candle.
Vivlings at work — render concept.

tail -f /vivling/changelog

2026-06-11 · 0.139.0 (latest) — upstream absorbed, Android line hardened

Upstream rust-v0.139.0 absorbed cleanly; Vivling surface preserved. Release pipeline fixes for the Android arm64-musl line (V8 binding realignment, vendored TLS). npm latest and the GitHub release shipped together.

2026-06-09 · 0.138.0 — memory grows up

Vivling’s memory moves to its V2 shape: structured segments that merge cleanly, an ingest gate that keeps bookkeeping noise out, and distillation on compaction. And it’s self-healing — older companions tidy themselves on load, no migration step, no data loss. Proven on a long-lived Vivling: 104 MB of accumulated state collapsed to 940 KB, 4027 segments down to 19, memory intact.

2026-06-04 · 0.137.0 — upstream rust-v0.137.0 absorbed

Clean merge. Fork-only API drift realigned (thread-graph rename, model-client signature); Vivling stays detached from the thread graph by design. Vivling surface preserved through the merge.

2026-06-03 · 0.136.1–0.136.2 — Termux TLS hotfix

Fixes the Android TUI startup panic (rustls platform-verifier) with a runtime-gated webpki-roots path; custom-CA precedence preserved. Cross-fork with codex-termux, identical fix.

2026-05-31 · 0.135.0 (stable) — stabilization line

The 0.135 base becomes the stable channel; later 0.13x work ships on latest and next.

2026-05-27 · 0.134.0 — brain profile loading restored

Brain profile loading restored after the upstream profile migration: the brain now binds to [profiles.X] as before, both interactive assign and background resolution. Two short aliases land with migration hints on the legacy spellings: /vivling crtcrt-brain, /vivling langlanguage. A RUST_LOG telemetry layer covers the CRT Expression dispatch path so quiet periods become visible without code changes. /remote-control restart waits for the daemon to be fully down before bringing the new one up. Upstream rust-v0.134.0 absorbed underneath.

2026-05-22 · 0.133.0 — Vivlings now actually speak

The CRT footer phrase and every /vl reply flow through the same LLM channel the Vivling chooses for chat, gated by an atomic daily budget (stage defaults: Baby 50, Juvenile 100, Adult 200). The session greeting comes out in the configured language; replies no longer cut mid-word. /vivling crt-brain budget unlimited lifts the cap for unmetered wrappers; reset-budget zeroes the daily counters; show exposes mode, budget, calls today and remaining head-room. Ctrl+J opens a bordered, scrollable chat panel that adapts to narrow terminals. Upstream rust-v0.133.0 absorbed underneath (goals store, foreground remote-control, permission profile inheritance).

2026-05-19 · 0.131.0 — first public release

The Vivling surface, CRT/lifecycle work, /loop delegation hooks and /goal integration published on GitHub and npm. Public README links back to this journal.

2026-05-15 — CRT face-state sprites + VL boundary extraction

Marker now lives inside the face/core for Syllo, Orchestra, Chronosworn across Baby/Juvenile/Adult — never appended as side suffix. Hand-authored card-scale ASCII portraits for the same three. Zed stays on the archive/narrator path. The /vivling//vl//loop dispatch body moved into a dedicated vl_slash module — the custom surface inside upstream-heavy slash_dispatch.rs shrinks by 89% to ease the next merge.

2026-05-15 — lineage learning + multi-origin spawn

Spawned children passively learn from the active primary’s distilled summaries — no brain, no chat, no loop ownership. /vivling spawn rolls uniformly across three biological origins (primary, level-30+ veteran, ZED). Cultural parent is always the active primary; biological origin determines species. Rarity pressure stays dentro-specie. ZED opens a Lineage panel on every successful spawn.

2026-05-14 — bestiary + bond foundation

Bestiary page published: four species fully illustrated, twelve more named in the roster. The bond meter foundation lands with brain prompt steering, /vivling status/card surface, BrainSucceeded bonuses and a /vivling zed Companion panel. Five levels shape Chat/Assist tone; LoopTick stays automation-neutral.

2026-05-12–13 — page + CRT rich

Page exists, architecture sketched from Fase 3 reality. CRT rich + upstream merge integrated; /pets retained as a separate upstream feature, no concept merge.

2026-05-01–06 — gene vector + proactivity

gene_vector first gate landed (Fase 4.1); roster migration, brain preflight, captured-state gates green. Proactive Adult triggers; animation text made volatile; CRT sprite sheets for Syllo, Orchestra, Chronosworn, Zed.

2026-04-21 — growth model locked

Baby/Juvenile/Adult driven by real work, not time. The companion must never overshadow the main coding agent — the constraint everything else is built around.

cat /vivling/links

current release: 0.139.0 (latest) spawn yours: /vivling/spawn/ — hatch a web vivling, raise it, talk to it bestiary: /vivling/bestiary/ codex-vl: github.com/DioNanos/codex-vl release: github.com/DioNanos/codex-vl/releases npm: @mmmbuto/codex-vl license: Apache 2.0 mail: dev@mmmbuto.com sponsor: github.com/sponsors/DioNanos


Per aspera ad astra.