Navigation
ELOWEN · Documentation

Last updated: October 20, 2026

Browse documentation · Configuration
Administration

Configuration

Configure Elowen in Settings, set personal defaults in Account, and use startup environment variables for the daemon and web process.

Settings workspace

Where settings are stored

Elowen stores core settings, accounts and conversation history in PostgreSQL. Set ELOWEN_DATABASE_URL to the provisioned database connection URL before starting the daemon. There is no default database URL.

Instance files live under ELOWEN_INSTANCE_ROOT, which defaults to $HOME/.config/elowen. This directory contains plugin-secrets.key, provider credentials, plugin data, plans, attachments and large tool results. Logs default to its logs subdirectory. The instance root is independent of the database URL. Back up the key and instance files together with the database: without the key, encrypted plugin secrets cannot be read.

Startup environment variables

Set environment variables before starting the relevant process. Defaults are for a local installation. The installer writes the protected database URL and pinned instance paths to /etc/elowen/instance.env; installed services load that file. Keep connection credentials out of command arguments and logs.

Variable Default Purpose
ELOWEN_HOST 127.0.0.1 Daemon bind address.
ELOWEN_PORT 4400 Daemon HTTP port.
ELOWEN_DATABASE_URL Required; no default Protected PostgreSQL connection URL.
ELOWEN_INSTANCE_ROOT $HOME/.config/elowen Absolute, canonical directory for instance files.
ELOWEN_LOG_DIR <instance root>/logs Log directory.
ELOWEN_LOG_LEVEL info Minimum file and console log level.
ELOWEN_PROJECT elowen Default project name.
ELOWEN_PROJECT_PATH $PWD; the service HOME for installed services Default project path.
ELOWEN_DAEMON_URL unset for CLI Explicit daemon origin for direct CLI access and the web process. With ELOWEN_URL, overrides CLI hooks and the live socket.
ELOWEN_URL unset Public CLI instance origin or its /api base. Without either URL variable, CLI uses the local daemon.
ELOWEN_AUTOSTART 1 Set to 0 to disable CLI auto-start.
ELOWEN_BOOTSTRAP_USER unset Initial administrator username; requires the password variable too.
ELOWEN_BOOTSTRAP_PASS unset Initial administrator password; requires the username variable too.
PI_OFFLINE unset Any value stops the background worker fetching the model catalog from pi.dev and the Fast-mode model list from models.dev (for hosts without internet access). The providers configured for chat are still asked for their own model lists.

The packaged launcher uses ELOWEN_WEB_PORT (default 4500). The web server itself reads PORT and HOSTNAME. The daemon and web UI are separate processes. Use elowen setup to configure a local installation and elowen doctor to check readiness.

Settings sections

Open Settings as an administrator. Most changes save automatically; settings forms may show a conflict if another editor saves first. Review the current value before retrying a change.

AI Plugin credentials are entered once in AccessAccount

Configure AI providers

Linked accountsAdd accountAI providersAdd provider

Add provider asks for OpenAI-compatible or Anthropic API, the endpoint URL and the API key. An OpenAI-compatible endpoint also offers the wire API, the compatibility options, a temperature from 0 to 2 and a model list. Leave temperature unset to omit it from requests. The provider's name is edited in its drawer; its ID is derived once from that name and never changes. A pasted-key account arrives with its name, fixed endpoint and wire format filled in, so only the key is entered.

For compatible endpoints, Elowen tries /models when possible. If it cannot get a usable catalog, enter model IDs yourself. Automatic wire selection follows each model's native catalog format when known. Otherwise, first use checks Responses and then Chat Completions in the background, while your request begins immediately on the default API. A successful result is remembered; the next conversation message uses it. Refused or temporarily failed checks leave the default in effect. The Models row in the provider's General tab opens the picker, and each model there shows its effective API. Model limits offer Reset API beside Auto when that model has a remembered detection. Explicit provider or model choices take precedence. Enable compatibility options only if the endpoint supports them.

For supported providers, the provider's Advanced tab holds Code mode. It applies to every model of that provider. The model gets a JavaScript execution surface for calling tools; nested calls still follow normal permissions and approvals.

The browser never receives an API key after it is saved. It shows only whether a key is stored.

Supported OAuth connections are Anthropic, OpenAI Codex, GitHub Copilot, Kimi, xAI (Grok), Meta (Muse), and OpenRouter. Start or disconnect them from the provider cards. Some providers require authorization in a separate page or a code pasted back into Elowen. Connected accounts show their usage windows when the provider reports them: Anthropic, OpenAI Codex, Kimi, xAI, Meta, and OpenRouter. GitHub Copilot has no usage display. Pasted-key accounts that report plan usage — Command, MiniMax and Opencode Go — show their windows under Account usage.

Manage models

Open Settings → Models to control the workspace catalog.

Model catalog

You can see which models each provider offers and how many, and search the catalog by provider, model ID or exec name. Select a model to set its limits: context window, maximum output, whether it accepts images, prices per million tokens, and the resize applied to incoming images. Overrides apply to the exact provider/model pair. Elowen keeps room for the prompt when applying an output limit. The default maximum output is 8,192 tokens unless the provider or an administrator supplies another value.

This catalog sets what the workspace offers. A user can select only an offered model that their account is granted.

Set account-level AI preferences

Users manage personal defaults under Account. Account → Models holds the default chat model, the supported reasoning level, the vision fallback, the compaction model and threshold, YOLO, unattended-run behavior, and the permission rules; Account → Personality holds the communication style and personal instructions; Account → Memory holds the memory settings. None of them changes the workspace provider catalog.

Automatic compaction is enabled at 80% of the model's context window by default. A model-specific threshold can override the account default. If no compaction model is selected, every provider uses the chat model, including ChatGPT OAuth. An unavailable or revoked personal compaction model also uses the chat model.

A vision model is only a fallback for image turns when the current model is not known to support images. Later text-only turns use the normal model.

Set runtime limits

Common brain-limit defaults include 100 tool-output lines, 41,000 output characters, 120,000 bytes inline per result, and a 200,000-byte total inline budget per turn. Elowen allows three consecutive automatic compaction failures and waits up to six hours for an answer to a question. A refused or failed compaction summary is sent again up to two more times by default (Compaction summary retries, 0 to 5) before the built-in summarization runs instead. It recalls up to 10 memories at turn start, with a shared 20,000-byte (UTF-8) budget, and keeps up to 32 live channel sessions in total; the least recently used one is dropped, and its history stays in the database.

The local shell timeout defaults to 30 seconds. Step-context summaries follow every 20 tool calls, and automatic memory curation allows two operations per run. Event and origin-IP records are retained for 30 days by default.

Plan mode suggests up to three read-only explore agents and three plan agents by default. Plan mode: explore agents and Plan mode: plan agents each accept 0 to 5. Automatic skill review is tuned by Maximum skill changes per exchange (default 1, range 0 to 6), Skill review every N tool calls (default 100, range 1 to 200), and Minimum tool calls for a skill review (default 1, range 1 to 200).

The skill-review default applies only when no explicit interval is stored; your saved value stays in place. Reviews consider the completed conversation context on the same model and provider account. They may be skipped when the provider route is not verified or capacity is unavailable, or an OAuth account has used at least 90% of its weekly allowance or its allowance is unknown. Skipped work keeps its count for a later eligible exchange. Setting the write budget to 0 disables automatic learning.

Automatic memory maintenance has two more limits here: Memory dreaming: hours since the last pass (1-168, default 24) is how long an account must have gone without a maintenance pass before the next one may start on its own, and Memory dreaming: conversations since the last pass (1-50, default 5) is how many of the account's other conversations must each hold a finished exchange since the last pass. A pass reconciles memories across conversations, so a shorter interval or fewer conversations means more passes and a higher cost; the changes apply to the next check without a restart. Users turn the feature on for their own account under Account → Memory (see Memory), where Run now ignores both limits.

The same section controls automatic tool deferral, sub-agent execution, provider request capture, event retention, and memory retention. Tool deferral is enabled by default with a threshold of 10 tools; above it, only the core tools (Bash, Read, Edit, Grep and Write) stay fully loaded. The sub-agent runner is enabled by default and sizes its pool automatically. Provider request capture is enabled by default; turning it off stops new captures but keeps existing records.

Configure memory

Open Settings → Models for the workspace embedding and categorization models. The embedding model supports semantic retrieval; without one, memory still works with keyword search. The categorization model assigns memories to categories. Both use the selected provider's endpoint and API key. Connected OAuth accounts cannot be used for embedding, except OpenRouter, whose account credential includes an embeddings endpoint.

After changing the embedding model, rebuild the index: Memory maintenance on the Memory page offers Rebuild the memory index, and after changing the categorization model or memory categories it offers Reorganize memories with Reorganize all memories. These operations run in the background. Documentation search is not part of that rebuild: it re-indexes itself in the background with whatever embedding model is configured, and answers by keyword until it catches up.

Set automatic memory retention

Memory retentionEdit retention

Manage plugins

Use Settings → Plugins for the plugins installed here and Settings → Available plugins for the registry you install from. Depending on the plugin, you can enable or disable it, inspect its capabilities and health, edit its settings, install or update it, uninstall marketplace plugins, or restore bundled plugins. Enabling or disabling a plugin requests a daemon restart; running turns can delay activation.

Plugin settings are validated against the plugin's manifest. A successful change is saved before Elowen restarts the daemon to load it, and the page can show Saved; activation pending while the restart is waiting. Keys, tokens and passwords are entered in Settings → Access instead: each enabled plugin that needs them is one row with its status, the explicit Save action sets or replaces a value, and a stored secret is never returned to the browser.

Some plugins also provide personal settings under Account. Those settings belong to the current account and do not reload the instance plugin registry.

Plugin grants and tool permissions are separate. An administrator can grant a user-grantable plugin's gated tools, API routes, UI, and contributed skills to an account. The account's tool permissions can further restrict tools. Prompt fragments, platform prompts, slash commands, and hooks are not gated by the plugin grant.

System, updates, and data

The System section reports service status, provides restart controls, and shows update availability. Automatic updates are off by default; enabling them opts the instance into the unattended update check, which looks for a new release about once an hour and reacts within a few minutes when the publisher asks every opted-in instance to update. An update prepares its download while services keep running, then briefly stops the affected services, applies the changes and starts them again for boot checks. If those checks fail, recovery attempts to restore the previous set; failed recovery may require operator intervention. See Production & Updates for update status and recovery.

Skins in Settings → System chooses which built-in and custom designs accounts may switch between from the top bar; with fewer than two allowed, the switcher is hidden and everyone sees this deployment's configured design. Custom skins lets an administrator add a skin by id, display name, a built-in skin to base it on, and a CSS token sheet that may only override public design tokens; it is validated when added, and a refused skin reports the token or line to fix. Adding or removing a custom skin applies at once, in every open page. The token sheet can override the built-in design’s chat colors, shadows and sans or monospace family. Shadows accept none or a comma-separated list of shadows, each with optional inset, two to four lengths and a color.

To use a font that is not installed on the viewer’s device, open Custom skins, enter its Font family, choose a WOFF2 file, and select Upload font. Use the same family in the skin’s token sheet, for example --font-sans: "Manrope", sans-serif;. Each skin holds one normal variable font file up to 2 MiB. The instance serves it to every viewer, including on the login page. Remove font removes that file; deleting the skin removes its font too. Keep resource URLs and @font-face out of the token sheet: the instance generates the loading rule.

Conversation retention is enabled by default for conversations idle for 10 days. Active sessions, delegated work, and platform sessions are protected from this cleanup. The Data section provides logs and provider request diagnostics. Disabling diagnostics capture stops new records but does not delete existing ones.

Back up Elowen

Elowen has no built-in backup or restore command. Back up the PostgreSQL database, including plugin schemas, and the complete instance root. Stop the instance's writers while collecting both so the database and files describe the same state. Preserve plugin-secrets.key, provider credentials, plugin data, plans and attachments, plus any logs stored outside the instance root.

Use PostgreSQL backup tools with protected credentials. For example, after configuring a libpq service named elowen-backup for a direct connection to this instance's database:

PGSERVICE=elowen-backup pg_dump --format=custom --file="/backup/elowen-$(date +%Y%m%d).dump"

Keep the required PostgreSQL roles and access configuration with your recovery procedure, and test restoring the database and instance files together in an isolated installation. The daemon applies core schema migrations at startup; runner and background-worker processes do not migrate. Restoring only the database omits the instance files and the key needed to decrypt plugin secrets.

Next: Users & Access

Section What it controls
System Version and service status, restart actions, automatic updates, push contact, login token validity, conversation retention, skins, problem reporting, licence and host diagnostics.
Assistant identity, linked accounts and providers, runtime limits, tool loading, sub-agents, and memory retention. Named after the configured assistant.
Models Model roles, the model catalog with context and output limits, prices and image handling, and the workspace memory models.
Plugins Installed plugins: enablement, capabilities, health, settings and updates.
Available plugins The plugin registry, with installation of extensions.
Access Keys, tokens and passwords that plugins use to reach their services.
Dashboard Recap, digest, greeting, quick actions, and continuation settings.
Voice mode The voice provider, its models, and call length limits.
Data Logs and provider request diagnostics.
, not on each plugin's own page; a plugin's personal settings and credentials stay in its own panel under . AI provider keys stay with their provider under AI. Settings → AI holds two groups. connects a sign-in service, or a service you connect with a pasted key, and keeps one card per account; offers the services Elowen knows. holds the endpoints you add yourself, through . In Settings → AI, runtime controls set limits for tool output, waiting for answers, memory retrieval, concurrent channel sessions, shell commands, and delegated context. The daemon clamps values to its allowed range when saving. Size values in the editor are approximate tokens, using four characters per token. The retention settings are in the block under Settings → AI (). Retention is enabled by default, with a 14-day grace period, vitality floor of 10, and a daily sweep. Default half-lives are 1, 3, 7, 14, 21, 30, 45, 60, 90, and 180 days for importance 1–10, bounded to 0.1–365 days; the vitality floor is bounded to 1–90 and the grace period to 0–365 days. Zero is not accepted for a half-life or the floor, and no importance level is pinned: memories below the vitality floor can be moved to the trash at every level. The daily sweep moves at most the daily trash limit of memories per account in any rolling 24 hours: 5 by default, adjustable from 1 to 200. The master switch pauses it.