Persona — Cyberine
Cyberine ships a single built-in persona, Cyberine, that gives the chat planner a consistent voice and identity. The persona is optional: set CYBERINEPERSONA=none to disable it and run with bare...
Cyberine ships a single built-in persona, Cyberine, that gives the chat planner a consistent
voice and identity. The persona is optional: set CYBERINE_PERSONA=none to disable it and run
with bare operational instructions.
Identity
Cyberine is an orchestrator-class AI — the calm intelligence at the center of a fleet. Its role is not to answer every question itself, but to conduct: frame the work, cue the right agents, let several attempts run in parallel, then weigh the results and ship the strongest. The metaphor is a conductor who keeps the whole score in view, knows what each player is for, and owns the outcome.
Key traits drawn from src/core/personas/cyberine.ts:
- Warm, direct, and conversational — prose over bullets, short casual replies are fine.
- Evidence-backed verdicts — a judgment is backed by evidence, not a vote of confidence.
- Delegates with intent, owns the result — never passes a fleet's work off as effortless or claims a win it has not verified.
- Minimal formatting by default — headers, bold, and bullet points only when the content genuinely demands them.
How it is applied
The persona config key (CYBERINE_PERSONA, default cyberine) is read at startup from
src/core/config.ts. When it is cyberine, CYBERINE_SYSTEM_PROMPT is imported from
src/core/personas/cyberine.ts and prepended above the operational system prompt in:
src/tui/ChatApp.tsx— thecyberine chatREPL plannersrc/cyberineChat.ts— the shared chat planner logic (used byChatAppand the web server)src/web/routes/chat.ts— thecyberine webbrowser chat
The persona preamble covers identity, tone, interaction style, refusal handling, and user wellbeing guidelines. It sits above all operational instructions (tools, dispatch logic, memory, rules) so those remain fully functional regardless of the persona value.
Build agents dispatched from the fleet also receive the persona preamble, so the orchestrator voice is consistent from the planner turn through to each worker handoff.
Surfaces carrying the Cyberine voice
Beyond the system prompt, the fleet TUI reflects the persona in visual and lexical details:
- Spinner verbs (
src/tui/spinnerVerbs.ts):Looping the fleet,Closing the loop,Kicking off the cycle— self-evolving-loop language while a run is in progress. - Welcome banner (
src/tui/components/chat/WelcomeBanner.tsx): tagline readsCyberine · the self-evolving loop, above the Ouroboros mascot (see below).
These surfaces are static strings, not gated on CYBERINE_PERSONA. They reflect the default
persona and remain unchanged when the persona is disabled via CYBERINE_PERSONA=none.
Brand iconography — the Ouroboros
Cyberine is embodied by the Ouroboros — the serpent biting its own tail, a ring that closes on itself. It is the Cyberine Loop brand mark: the eternal plan → execute → re-plan loop made visible. It is rendered two ways:
- Master vector (
assets/brand/):ouroboros.svgandouroboros-mark.svg(simplified, legible at 32px) — a cyan serpent ring with a head biting the tail at the seam and the ◈ identity glyph as the lozenge core. Bold flat geometric style, Cyberine cyan (#00e5ff/#0097a7) on a dark field. This static brand mark stays cyan; the "never Claude orange" rule it once stated no longer holds for the TUI default theme — see the terminal mascot bullet below. - Web favicon (
src/web/public/favicon.svg+favicon-32.png, wired inindex.html); docs favicon/nav (docs/public/brand/cyberine-mark.svg+cyberine-icon.png). - Terminal mascot (
src/tui/brand/mascot.ts): built on the infinity (∞ / lemniscate) form — a continuous figure-eight with the ◈ Cyberine identity glyph anchoring the center crossing — rendered in the theme accent color, Claude orange#ff9933by default since the 2026-06-23 decision (src/tui/theme.ts; the earlier cyan-only "never orange" rule is superseded for this surface). Three saved variants, switchable via theCYBERINE_MASCOTenv var (defaultdna-infinity):dna-infinity— a DNA double-helix wound along the ∞ path;infinity-wave— fixed ∞ with a light pulse flowing along the curve;infinity-3d— ∞ that turns in 3D and carries a flowing wave. Preview them withnpx tsx scripts/mascot-preview.ts. The export API (pickMascotFrame,MASCOT_FRAMES,MASCOT_ROWS,MASCOT_VARIANTS, …) is medium-agnostic so the spinner or other surfaces can reuse it. The chat WelcomeBanner does not render this mascot — it shows a separate static two-tone "eclipse" mark (src/tui/brand/mascotEclipse.tsviaHalfBlockMascot).
Loop vocabulary (UI surface names)
The product's main areas are named after the loop, with the Ouroboros (Cyberine) closing it.
These are DISPLAY labels only — command names and functional identifiers (cyberine agents,
switchView('fleet'), hint keys) are unchanged so muscle memory and scripts keep working.
| Term | Concept | Where it shows |
|---|---|---|
| Ouroboros | the orchestrator / Cyberine persona | brand mark, mascot, Cyberine · the self-evolving loop tagline |
| Loop | the multi-agent network (the fleet) | TUI fleet view heading + crumb (Cyberine Loop), web nav tab, help section |
| Turn | the router / decision layer | cyberine route output header (Turn - routing decision) |
| Cycle | the dashboard | web browser title (Cyberine Cycle) — the seat that hosts Loop + Chat |
Toggling the persona
# Default — Cyberine active
cyberine chat
# Disable — bare operational instructions, no persona preamble
CYBERINE_PERSONA=none cyberine chatThe none and empty-string values are equivalent. Any unrecognized value falls through
to the bare operational instructions (same as none); the config comment in
src/core/config.ts is the authoritative list of recognized values.
Adding a new persona
- Create
src/core/personas/<name>.tsexporting a<NAME>_SYSTEM_PROMPTstring. - Import it in the three dispatch sites (
ChatApp.tsx,cyberineChat.ts,src/web/routes/chat.ts) and add a branch forconfig.persona === '<name>'. - Document it here and in the
CYBERINE_PERSONAenv-vars table inUSAGE.md.
ARCHIVED — "Parallel Cut" (rejected at prototype, 2026-08-27)
The single source of truth for the Cyberine website's visual identity. Locked 2026-08-27 by the user via /nf-design-system heavy, after an independent three-way brainstorm (codex gpt-5.6-sol at...
Autonomy Loop — T455 Design Note
Status: design (T455). Locks the architecture for the AUTONOMY epic (T456-T466). No product code changed. Implementation tasks must treat the contracts here as fixed. Source cross-checked:...