Platform
Config, deployment, and multi-user behavior.
Configuration files
| File | Purpose |
|---|---|
config/core.yml |
Core host/port, main_llm, embedding_llm, local_models, cloud_models, use_memory, use_tools, use_skills, memory backend (Cognee/Chroma), tools.*, auth, etc. |
config/user.yml |
Allowlist of users: name, id, email, im, phone, permissions. Required for channels. |
channels/.env |
CORE_URL (e.g. http://127.0.0.1:9000), bot tokens (e.g. TELEGRAM_BOT_TOKEN). |
config/email_account.yml |
IMAP/SMTP for the email channel (if used). |
Multi-user
Chat history, memory, and profile are keyed by system user id (from config/user.yml). Each user has isolated data. Add users under users: in config/user.yml with the correct im / email / phone for the channel. See MultiUserSupport.md in the repo.
Memory backend
- Default: Cognee (SQLite + Chroma + Kuzu by default; configurable to Postgres, Qdrant, Neo4j via Cognee).
- Alternative: Chroma (in-house): set
memory_backend: chromainconfig/core.yml; configuredatabase,vectorDB,graphDBthere. See MemoryAndDatabase.md in the repo.
Remote access and auth
To use the Companion app or WebChat from another network (e.g. phone on cellular, laptop away from home), you need a way to reach Core. Two common options:
- Remote access: Tailscale and Cloudflare Tunnel — Step-by-step intro to exposing Core with Tailscale (private tailnet or HTTPS) or Cloudflare Tunnel (public URL). The app only needs the resulting Core URL and optional API key.
- Auth: If Core is exposed to the internet, set
auth_enabled: trueandauth_api_keyinconfig/core.yml. Clients must sendX-API-KeyorAuthorization: Bearer <key>on/inboundand/ws. See RemoteAccess.md in the repo for details.
Companion app vs Channels
The Companion app (Flutter) is a direct client to Core: it calls POST /inbound (and config API) from your device. Channels (Telegram, Discord, WebChat, email, etc.) are server-side processes that bridge an external platform to Core. Same permission (user.yml), same session/memory keying (user_id + channel_name), same processing—the only difference is who sends the request and who receives the reply. See Companion app vs Channels for the full comparison.