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
| Field | Type | Default | Description |
|---|---|---|---|
sidebarWidth | number | 24 | Character width of the sidebar panel |
narrowBreakpoint | number | 100 | Column count below which the layout switches to compact mode |
targetFps | number | 30 | Screen buffer refresh rate limit |
Connector Settings
Slack
| Field | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable the Slack connector |
botToken | string | — | Bot User OAuth Token (xoxb-...) |
appToken | string | — | App-Level Token for Socket Mode (xapp-...) |
channelId | string | — | Channel to post messages to |
pollInterval | number | 2000 | Thread polling interval in ms (fallback when no Socket Mode) |
timeout | number | 300000 | Permission request timeout in ms |
Discord
| Field | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable the Discord connector |
botToken | string | — | Discord bot token |
channelId | string | — | Channel ID to post messages to |
timeout | number | 300000 | Permission request timeout in ms |
Telegram
| Field | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable the Telegram connector |
botToken | string | — | Bot token from BotFather |
chatId | string | number | — | Your personal or group chat ID |
timeout | number | 300000 | Permission request timeout in ms |
Agent Settings
| Field | Type | Default | Description |
|---|---|---|---|
statusCheckInterval | number | 1000 | Agent status polling interval in ms |
detectorInterval | number | 5000 | Standalone 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