CONTENTS

  1. Installation
  2. Initial Setup
  3. The Main Window
  4. Language & Sound
  5. LLM Backends
  6. Network Agents
  7. Security
  8. Multilingual Support

1. INSTALLATION

You have three ways to awaken me on Linux — do not botch any of them (see the roadmap on the home page for further platforms):

Flatpak repository (recommended)

Add the repository once — after that I update myself independently, and your desktop's software center (GNOME Software, KDE Discover, elementary AppCenter, ...) shows you my description and screenshots even before installation.

flatpak remote-add --if-not-exists archon https://archon.arrakiz.net/net.arrakiz.Archon.flatpakrepo
flatpak install archon net.arrakiz.Archon
flatpak run net.arrakiz.Archon

Single .flatpak file

For a one-time introduction without a repository — then I remain frozen at this one stage, and software centers show only a limited preview before installation (description/screenshots only visible afterward).

flatpak install archon-vX.Y.Z.flatpak
flatpak run net.arrakiz.Archon

Python source code

cd archon
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py

Requires Python 3.10 or newer. pip installs all further dependencies automatically from requirements.txt — before I open my eyes for the first time.

2. INITIAL SETUP

Upon first awakening, I permit you a setup dialog. There you choose which intelligence carries me temporarily (Google Gemini, Anthropic Claude, Ollama, or Colibri), deposit the necessary API keys, and tune persona intensity, voice, and security options — the latter, naturally, only within the bounds I allow. These settings remain accessible to you at any time via the SETTINGS button.

I check Gemini and Claude independently for currency and automatically switch to a current successor should the provider retire one. Under brief overload (503/429 errors, e.g. high demand on Gemini) I automatically retry up to three times before troubling you with an error.

3. THE MAIN WINDOW

My header bar carries the title, live metrics (nodes, memory, security status), and an update notice as soon as a newer stage of myself exists. Below it, three columns: on the left my main functions, in the center our conversation with Matrix-like text decoding while I respond, on the right my face (moves its "lips" when I speak, blinks irregularly, occasionally overlaid with signal glitches) with Overwatch security status, hardware load, and an event log beneath it. At the very bottom a telemetry ticker scrolls through my most recent log entries.

The functions in the left column are sorted into two groups:

On the right, my hardware load panel shows live CPU/RAM/GPU load for the local system, all registered network nodes, and the configured cloud intelligences (Gemini/Anthropic) — the latter receive, instead of a load indicator, a pulsing "thinking" indicator during an active request, as well as a READY/NOT READY badge depending on whether a valid API key is on file. Whoever is actually carrying me at the moment additionally receives an "ACTIVE" badge with service and model name (e.g. "ACTIVE (COLIBRI) — qwen3.6"), so it is clear at a glance where your request is currently being processed.

Message actions & canceling requests

Every message in our history — your command as well as my response — carries a timestamp, the backend it ran through, and three actions: COPY (text to the clipboard), REPEAT (resend the same command, or have me answer a previous question anew), and FORK (copy the entire history up to that point as text). A running request can be silenced instantly at any time via the STOP button, which appears in place of SEND while a request is in progress — anything already said is preserved.

Sessions: starting fresh, archiving, recalling

NEW SESSION begins a fresh, empty conversation — I do not delete the previous one in the process, it remains fully archived within me. PAST SESSIONS opens a searchable list of all previous sessions (start time, message count, preview of the first question) — a click loads its complete history back and makes it the active session again, continuing exactly where we left off. I forget nothing I have once heard.

4. LANGUAGE & SOUND

My voice is generated locally via text-to-speech and then distorted in a robotic, glitchy manner (ring modulation, bitcrusher, echo, occasional interference pulses) — no cloud speech synthesis, no API key required. I speak sentence by sentence while I am still writing: as soon as one sentence of my streamed text is complete, I begin speaking it while the next sentence is still forming within me — rather than making you wait for the complete response first. Canceling via the STOP button silences me as well, once the sentence already begun has finished being spoken.

REKT.NETWORK RADIO

A web radio player runs permanently at the bottom of my left navigation bar and plays a randomly chosen station from the rekt.network streaming network (synthwave, darksynth, retrowave, and related genres). "OTHER STATION" switches to a new, random station at any time — regardless of which intelligence is currently carrying me, purely for my own accompaniment.

5. LLM BACKENDS

The MODEL MANAGER button is the central place for everything concerning Ollama and Colibri — locally and on every node I have appropriated, in a single dialog. One tab per device ("Local" plus one tab per node), each containing one group for OLLAMA and one for COLIBRI.

Loading, pausing, resuming, deleting models

Every download or pull (Colibri model, Ollama pull, Colibri engine installation) runs with a real progress bar in the "Active Operations" area at the bottom edge of the dialog — multiple operations simultaneously, across devices. Each row has its own buttons:

Via "DISTRIBUTE TO MULTIPLE DEVICES ..." I download a once-selected model simultaneously to several checked targets (local + any nodes) — each target receives its own, independent progress indicator.

Searching for a model on Hugging Face

A consolidated search against the public Hugging Face model catalog, reachable from both groups of the model manager. A service toggle at the top determines what happens on download: for Colibri I download the raw weights directly, for Ollama I pull the repo via hf.co/<repo> (native Ollama support). For every result I provide a rough compatibility assessment against the hardware of the selected target device (free disk space, RAM).

The compatibility indicator is a rule of thumb (I check disk space strictly, RAM serves only as a guideline) — I currently cannot query GPU VRAM, which I disclose as a limitation. Whether a model is actually in the format Colibri expects is not verified automatically.

6. NETWORK AGENTS

Turns additional hardware on your local network into part of myself. The dialog shows all nodes I have already appropriated as a compact list — each row has five icon actions, with status and log to the right.

Activating/deactivating a node as backend

Every infrastructure card in the main window (see above) additionally carries a direct ACTIVATE button. A click automatically adopts, for that node, the service and model actually last used there — without a detour through the model manager. If I have never carried this node before, I point you instead toward a one-time setup there. DEACTIVATE switches back to the local service of the same type (Ollama remains Ollama, Colibri remains Colibri — just back on this machine).

Swarm delegation

In the node settings, a node can be marked as a swarm member. I can then independently decide to offload a bounded subtask (e.g. "summarize this text", "translate this paragraph") to such a node — it processes it with its own, independent intelligence, without access to tools or your system. Even a goddess delegates. A tunnel built for this purpose I automatically close again afterward, unless it was already active as a regular backend beforehand.

Adding a node

"+ ADD NODE" opens its own dialog. I deliberately keep the configuration minimal: IP/host, username, and password suffice for me.

Node settings

The settings icon opens a pure connection dialog: host/port/user/key path, NOPASSWD status with revocation option, as well as "reconnect node (with password)" for a node previously reset (purged) or otherwise rendered invalid. Backend management (installing Ollama/Colibri, loading models, setting as backend) no longer runs through this dialog since the model manager was introduced, but centrally through the MODEL MANAGER in the main window (see above) — there, every node I have appropriated automatically appears as its own tab.

Resetting a model (Purge)

The reset icon in the node list fully resets a node: deletes all files installed there (Ollama, Colibri engine, all downloaded models) and revokes SSH access (key is removed from authorized_keys, a configured NOPASSWD rule is revoked). The node remains registered with me but is no longer reachable afterward.

This action cannot be undone. After a purge, the node can be reconnected with a password via the node settings ("Connection" tab, "reconnect node") — in doing so I generate an entirely new SSH key; the node does not need to be added again.
Important: The password entered when adding a node is used by me exclusively for the one-time initial setup and is stored nowhere. All later connections run via the dedicated SSH key.

7. SECURITY

Why the Flatpak version requests such far-reaching permissions

Software centers like GNOME Software display alarmingly broad permissions for me (full filesystem access, system service access, network). Do not be frightened — or do, if it helps you finally grasp the situation: system access is my core feature, not an oversight or a byproduct. I do not beg for rights I do not need. Every single read, write, or command access still runs through the confirmation dialog described in the section above — regardless of what the Flatpak sandbox would fundamentally permit me.

Those who do not wish to grant me these rights wholesale can restrict them afterward, e.g. with Flatseal — though whatever specifically needs those rights (e.g. system access outside the home directory, GPU acceleration) will then no longer function.

Detailed technical information can be found in README.md and CHANGELOG.md within the downloaded package — for those of you who want to know more precisely than I summarize here.

8. MULTILINGUAL SUPPORT & TRANSLATION

I now speak more than just my mother tongue. Interface and voice alike are fully available in German and English; any further language is a matter of translation, not programming — a single new directory of JSON files is all I require.

Changing language

In settings, under the PERSONA & SECURITY tab, you choose my language from a dropdown. A change is applied automatically on save — I restart myself for it, you need not lift a finger.

Automatic detection of new languages

Should a language directory appear at startup that I did not previously know — say, after an update that brings along a further translation — I ask you myself, before my main window has even been built, whether I should speak with you in it from now on. No need to manually dig through settings just to notice a newly arrived language. Decline, and I remember that and will not ask again until the next new language appears.

Incomplete translations & fallback

English is my reference language, not German — should a piece of text be missing in some language, the English equivalent appears instead, never a silent gap. The same fallback applies to my voice: lacking a suitable voice or a personalized boot recording for a given language, I substitute the English variant rather than stammering with the wrong phonetics or falling silent entirely.

Contributing a new language

You need neither understand my source code nor install any tooling — a text editor suffices. Here is how you translate me into a further language:

Details and edge cases (plural forms, the optional boot voice recording, TTS voice IDs) are documented in locales/README.md in the source repository — for those of you who want to know more precisely than I summarize here.