Skip to content

Configuration

IO is configured via ~/.io/config.json and environment variables. Environment variables take precedence over the config file.

Config File

json
{
  "port": 7777,
  "logLevel": "info",
  "defaultModel": "gpt-4o",
  "telegramToken": "YOUR_BOT_TOKEN",
  "telegramUserId": "123456789",
  "supabaseUrl": "https://your-project.supabase.co",
  "supabaseAnonKey": "your-anon-key",
  "sessionResetThreshold": 50,
  "pricingRefreshHours": 24
}

All fields are optional — IO runs with sensible defaults if no config file exists.

Environment Variables

VariableDescriptionDefault
IO_PORTHTTP/WS server port7777
IO_LOG_LEVELLog level (trace/debug/info/warn/error)info
IO_DEFAULT_MODELDefault LLM model for the orchestratorgpt-4o
IO_TELEGRAM_TOKENTelegram bot token
IO_TELEGRAM_USER_IDAllowed Telegram user ID
IO_SUPABASE_URLSupabase project URL
IO_SUPABASE_ANON_KEYSupabase anonymous key
IO_SESSION_RESET_THRESHOLDMessage count before session reset50
IO_PRICING_REFRESH_HOURSHow often to refresh model pricing (hours)24

Model Routing

The orchestrator always uses the configured defaultModel (fallback: gpt-4o). It does not dynamically switch models.

Squad agents use dynamic model routing — an LLM classifies each task's complexity and selects the cheapest capable model from 5 tiers (trivial through ultra). See the Model Routing guide for details.

The model catalog is refreshed from GitHub's APIs every pricingRefreshHours hours.

Authentication

Telegram

Authentication is by Telegram user ID. Set your numeric user ID in telegramUserId (config) or IO_TELEGRAM_USER_ID (env). Messages from other users are ignored.

Web Dashboard

If Supabase is configured, the web dashboard requires login. Without Supabase config, the dashboard is open (suitable for local-only use).

Data Directory

All IO data lives in ~/.io/:

PathPurpose
config.jsonConfiguration
io.dblibSQL database (squads, conversations, tokens, etc.)
wiki/Knowledge base markdown pages
skills/Installed SKILL.md skill files
logs/io.logApplication logs (rotated)

Released under the MIT License.