agent-manager

Configuration

Config File

Settings are persisted to ~/.config/agent-manager/settings.json and validated with Zod on load. You can edit the file directly or use the in-app settings panel (Ctrl+S).

Full Schema

{
  "ui": {
    "sidebarWidth": 24,         // Sidebar character width
    "narrowBreakpoint": 100,    // Column threshold for responsive layout
    "targetFps": 30             // Screen buffer refresh rate
  },
  "connectors": {
    "slack": {
      "enabled": false,
      "botToken": "",           // xoxb-... token
      "appToken": "",           // xapp-... token (optional, for Socket Mode)
      "channelId": "",
      "pollInterval": 2000,     // Thread polling interval (ms)
      "timeout": 300000         // Permission request timeout (ms)
    },
    "discord": {
      "enabled": false,
      "botToken": "",
      "channelId": "",
      "timeout": 300000
    },
    "telegram": {
      "enabled": false,
      "botToken": "",
      "chatId": "",
      "timeout": 300000
    }
  },
  "agents": {
    "statusCheckInterval": 1000,  // Agent status polling (ms)
    "detectorInterval": 5000      // Standalone agent scan interval (ms)
  }
}
JSONC

UI Settings

FieldTypeDefaultDescription
sidebarWidthnumber24Character width of the sidebar panel
narrowBreakpointnumber100Column count below which the layout switches to compact mode
targetFpsnumber30Screen buffer refresh rate limit

Connector Settings

Slack

FieldTypeDefaultDescription
enabledbooleanfalseEnable the Slack connector
botTokenstringBot User OAuth Token (xoxb-...)
appTokenstringApp-Level Token for Socket Mode (xapp-...)
channelIdstringChannel to post messages to
pollIntervalnumber2000Thread polling interval in ms (fallback when no Socket Mode)
timeoutnumber300000Permission request timeout in ms

Discord

FieldTypeDefaultDescription
enabledbooleanfalseEnable the Discord connector
botTokenstringDiscord bot token
channelIdstringChannel ID to post messages to
timeoutnumber300000Permission request timeout in ms

Telegram

FieldTypeDefaultDescription
enabledbooleanfalseEnable the Telegram connector
botTokenstringBot token from BotFather
chatIdstring | numberYour personal or group chat ID
timeoutnumber300000Permission request timeout in ms

Agent Settings

FieldTypeDefaultDescription
statusCheckIntervalnumber1000Agent status polling interval in ms
detectorIntervalnumber5000Standalone agent scan interval in ms

Zod Schema

The config is validated at load time using Zod. Here are the schema definitions from src/config/config.ts:

const SlackConfigSchema = z.object({
  enabled: z.boolean().default(false),
  botToken: z.string().optional(),
  appToken: z.string().optional(),
  channelId: z.string().optional(),
  pollInterval: z.number().default(2000),
  timeout: z.number().default(300000),
});

const DiscordConfigSchema = z.object({
  enabled: z.boolean().default(false),
  botToken: z.string().optional(),
  channelId: z.string().optional(),
  timeout: z.number().default(300000),
});

const TelegramConfigSchema = z.object({
  enabled: z.boolean().default(false),
  botToken: z.string().optional(),
  chatId: z.union([z.string(), z.number()]).optional(),
  timeout: z.number().default(300000),
});

const UiConfigSchema = z.object({
  sidebarWidth: z.number().default(24),
  narrowBreakpoint: z.number().default(100),
  targetFps: z.number().default(30),
});

const AppConfigSchema = z.object({
  ui: UiConfigSchema.default({}),
  connectors: z.object({
    slack: SlackConfigSchema.default({}),
    discord: DiscordConfigSchema.default({}),
    telegram: TelegramConfigSchema.default({}),
  }).default({}),
  agents: z.object({
    statusCheckInterval: z.number().default(1000),
    detectorInterval: z.number().default(5000),
  }).default({}),
});
TypeScript