Skip to content
eternego / docs

Settings

How she's configured — her organs, her channels, the app's appearance, her lifecycle, and the one irreversible action. URL: /persona/{id}/settings, with a sub-tab per section: /persona/{id}/settings/{tab}.

A strip of sub-tabs runs across the top; the body shows the active one. The sub-tabs are: Mind, Imagination, Mouth, Eye, Ear, Teacher, Researcher (the seven organs), then Channels, Appearance, Lifecycle, and Danger. The persona record this screen edits comes from GET /api/personas.

Organ cards

The first seven tabs each configure one organ. They share one control (the organ card). Each shows what the organ does, its current state, and a form to set or change it.

The seven slots and what each is for:

Tab Slot What it does Required?
Mind thinking Every thought runs through this model — recognize, decide, reflect, remember. Yes
Imagination imagination Draws images. No
Mouth mouth Turns text into voice. No
Eye eye Looks at images you send. (Skip if her Mind already sees — most modern ones do.) No
Ear ear Turns voice notes into text. No
Teacher teacher A stronger model she consults rarely, for hard questions. No
Researcher researcher Reads documents (PDF, csv, json, txt, md) without flooding her memory. PDF needs an Anthropic or Gemini model. No

The tab is labeled Mind but the slot it writes is thinking — that mapping matters when you call the API directly.

State and the configurator

An organ is either set (shows provider, model, URL, with Change and — if optional — Remove) or empty (a prompt to add one). Either way, the form behind it is the organ configurator, the same control as in Onboarding. Pick Local or Cloud:

  • Local (Ollama): just a Model name (e.g. qwen2.5:14b) and an optional URL (default http://127.0.0.1:11434). No provider, no key.
  • Cloud: pick a provider tile, then URL (base endpoint, pre-filled — no /v1), API key (stored locally), and Model.

Provider tiles: Anthropic, OpenAI, Gemini, xAI, DeepSeek, Together, OpenAI-compatible. Of these, anthropic, openai, gemini, and xai are handled natively; deepseek, together, and openai_compat route through the OpenAI-compatible client — any OpenAI-protocol endpoint works via the OpenAI-compatible tile.

Save and remove

Action What it does API call
Save Set or change this organ. POST /api/persona/{id}/update with { "<slot>": { "provider", "model", "url", "api_key" } }
Remove Clear this organ (optional organs only). POST /api/persona/{id}/update with { "clear_<slot>": true }

Both go through /update. The slot name is thinking for the Mind tab, otherwise the lowercase organ name (eye, ear, …). Changing an organ restarts her if she's running — the card warns you ("she'll lose this conversation's working memory but her diary is safe"). Her saved API key is never returned to the screen, so the form is blank when you re-open a set organ to change it.

The card doesn't validate the model — the endpoint does

Save sends your input straight to /update, which validates the provider/model/key against the real provider and returns 400 with a reason if it can't be prepared. The screen surfaces that message.

Channels

Ways to reach her from outside this browser. She lives on this machine; channels are how you talk to her from elsewhere. The web channel is always on and can't be removed. Today's external channels are Telegram and Discord (bot tokens).

Each external channel has three states:

  1. Not connected — a Connect button opens a token form.
  2. Verifying (added but not yet paired) — a pairing form appears: open the bot, send /start, and paste the one-time code it replies with.
  3. Connected (paired) — shows the handle and a Remove button.

The controls and their endpoints:

Control What it does API call
Connect (paste token) Validate the bot token and add the channel. POST /api/persona/{id}/channels with { "kind": "telegram"\|"discord", "credentials": { "token": "<token>" } }
Pair (paste code) Bind the channel to your account so she only listens to you. POST /api/persona/{id}/pair with { "code": "<code>" }
Remove Drop the channel. DELETE /api/persona/{id}/channels/{channel_name}

channel_name for removal is the channel's handle (the name from her persona record). Adding or removing a channel restarts her to pick up (or drop) the gateway. Until you've paired a verified channel, she won't act on messages from it.

Appearance

How the app looks to you. One control:

Field Options Effect
Theme Dark, Light, System Sets the UI theme.

This is purely client-side — the choice is saved in your browser's localStorage (eg.theme) and applied immediately. It has no API call and is per-browser, not per-persona; it isn't stored in her files.

Lifecycle

The same lifecycle controls as the Status screen, here for when you're already configuring her. Shows her current status, then buttons:

Button What it does API call
Wake her up Bring her to active. POST .../update { "status": "active" }
Send her to sleep Full nightly ritual. POST .../sleep
Stop Abrupt pause — tear down her agent now, no ritual. POST .../stop
Restart Restart her process. POST .../restart
Hibernate Park her until you wake her. POST .../update { "status": "hibernate" }

Unlike the Status screen (which shows only the transitions valid from her current state), this tab always shows all five — including Stop, which the Status screen doesn't. Stop differs from Hibernate: Stop tears down the running agent but leaves her status as-is; Hibernate sets her status to hibernate. And both differ from Sleep, which keeps her running through her consolidate-and-diary ritual. See Lifecycle for exact transitions.

Danger

The one decision that can't be undone: Delete {name}. Her diary, her memory, her instructions — all gone. Without her recovery phrase and a saved diary file, deletion is permanent.

The button opens a confirm dialog that requires you to type her name to proceed. On confirm it calls POST /api/persona/{id}/delete, which stops her if running and removes her from disk, then returns you to the home screen.

Permanent

There is no undo. If you might want her back, export her diary first (GET .../export) and keep her recovery phrase.

  • Lifecycleupdate (organs + status), sleep, stop, restart, delete.
  • Channels — add, remove, and pair channels.
  • Create and migrate — the same organ fields, at creation time.
  • Vocabulary — the seven organs, channels, the three statuses.
  • Onboarding — the configurator's first appearance.