οὐθείς
EN · DE

Communicating with outheis

outheis can be reached through three channels. All channels connect to the same dispatcher and agents — the difference is where you type and how you receive responses.


Web UI

A browser-based interface served locally by the dispatcher. No separate server needed — the Web UI is built into the daemon and starts automatically with it.

Access: http://127.0.0.1:8080 (while dispatcher is running)

What it provides: - Live message feed showing all agent conversations in real time - Prompt input — send messages to the relay agent directly from the browser - Configuration editor (models, agents, providers, scheduler) - Memory, Rules, Skills viewer and editor - Vault file browser — browse, edit, and delete files across all configured vaults - Tags view — scan for #tags, rename or remove them across the vault - Scheduler — manage recurring tasks, view history

Configuration: Enabled by default. Port and host can be changed in config.json:

"webui": { "host": "127.0.0.1", "port": 8080 }

Remote access: The UI binds to localhost only. To reach it from another machine, use SSH port forwarding:

ssh -L 8080:localhost:8080 user@your-server

Then open http://localhost:8080 in your local browser. The tunnel stays active as long as the SSH connection is open.

For a full description of all views and API endpoints, see Web UI.


CLI

Command-line interface for sending messages and managing the daemon. Available as outheis after installation.

Setup: Available after pip install -e . with the venv active.

Sending messages:

outheis send "What's on my agenda today?"
outheis send "@zeno find notes about project alpha"
outheis chat                                        # interactive mode with history

The relay agent handles all messages and routes to the right agent automatically. Use @name to address an agent directly (@zeno, @cato, @alan, …).

Daemon control:

outheis start         # start in background
outheis start -f      # start in foreground
outheis start -fv     # foreground + verbose (shows tool calls)
outheis stop          # stop daemon
outheis status        # show PID, uptime, agent status

Inspecting memory and rules:

outheis memory              # show all stored memories
outheis memory --type user  # show only user facts
outheis rules               # show all rules (system + user)
outheis rules relay         # show rules for a specific agent

Signal

Receive and send messages via the Signal messenger app. The bot runs as a separate process alongside the daemon — it listens for incoming Signal messages, routes them to the relay agent, and sends responses back. Voice messages are transcribed automatically if faster-whisper is installed.

When to use: The primary channel for interacting with outheis from a phone without opening a browser or terminal.

What you need

A dedicated SIM card with a phone number that is not already registered on Signal. This number becomes the bot's identity — it should not be your personal number. A prepaid SIM works fine; the number only needs to be reachable by SMS or voice call once during registration.

1. Install signal-cli

signal-cli requires Java 17+. Install it first if needed (java -version to check).

macOS (Homebrew):

brew install signal-cli

Linux / manual:

Download the latest release from github.com/AsamK/signal-cli/releases. Extract and place the signal-cli binary somewhere on your $PATH (e.g. /usr/local/bin/signal-cli).

Verify:

signal-cli --version

2. Register the bot number

Replace +49... with the bot's phone number in international format throughout.

signal-cli -a +49... register

Signal sends a verification code to the number via SMS. If SMS is not available, request a voice call instead:

signal-cli -a +49... register --voice

Confirm with the received code:

signal-cli -a +49... verify 123-456

The account is now registered. signal-cli stores credentials under ~/.local/share/signal-cli/.

3. Trust your own number

Before the bot can exchange messages with your personal Signal account, you need to trust the safety number once:

signal-cli -a +49... trust -v <safety-number> +49YOUR_PERSONAL_NUMBER

To get the safety number:

signal-cli -a +49... listIdentities

Alternatively, send a test message first — signal-cli will print an untrusted identity warning with the safety number included, which you can then use to run the trust command.

4. Configure outheis

Add the Signal section to ~/.outheis/human/config.json:

"signal": {
  "enabled": true,
  "bot_name": "Ou",
  "bot_phone": "+49...",
  "allowed": []
}

Set bot_phone to the registered bot number. bot_name is the display name Signal contacts will see. allowed is a whitelist of phone numbers permitted to interact with the bot — an empty list means only human.phone (from the human section) can send messages.

Make sure human.phone in the config is set to your personal number:

"human": {
  "phone": "+49YOUR_PERSONAL_NUMBER",
  ...
}

5. Optional: voice transcription

To transcribe incoming voice messages before forwarding them to the relay agent:

pip install -e ".[signal]"

This installs faster-whisper. Without it the transport still works; voice messages are silently skipped.

6. Run

outheis signal        # foreground
outheis signal -v     # verbose (shows tool calls)

Signal transport and the main daemon run independently. Start the daemon first (outheis start), then the Signal transport in a separate terminal or as a background process.

For details on the internal architecture, see Signal.