kernelbot 1.0.25 → 1.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +198 -123
  2. package/bin/kernel.js +201 -4
  3. package/package.json +1 -1
  4. package/src/agent.js +447 -174
  5. package/src/automation/automation-manager.js +377 -0
  6. package/src/automation/automation.js +79 -0
  7. package/src/automation/index.js +2 -0
  8. package/src/automation/scheduler.js +141 -0
  9. package/src/bot.js +908 -69
  10. package/src/conversation.js +69 -0
  11. package/src/intents/detector.js +50 -0
  12. package/src/intents/index.js +2 -0
  13. package/src/intents/planner.js +58 -0
  14. package/src/persona.js +68 -0
  15. package/src/prompts/orchestrator.js +76 -0
  16. package/src/prompts/persona.md +21 -0
  17. package/src/prompts/system.js +74 -35
  18. package/src/prompts/workers.js +89 -0
  19. package/src/providers/anthropic.js +23 -16
  20. package/src/providers/base.js +76 -2
  21. package/src/providers/index.js +1 -0
  22. package/src/providers/models.js +2 -1
  23. package/src/providers/openai-compat.js +5 -3
  24. package/src/security/confirm.js +7 -2
  25. package/src/skills/catalog.js +506 -0
  26. package/src/skills/custom.js +128 -0
  27. package/src/swarm/job-manager.js +169 -0
  28. package/src/swarm/job.js +67 -0
  29. package/src/swarm/worker-registry.js +74 -0
  30. package/src/tools/browser.js +458 -335
  31. package/src/tools/categories.js +101 -0
  32. package/src/tools/index.js +3 -0
  33. package/src/tools/orchestrator-tools.js +371 -0
  34. package/src/tools/persona.js +32 -0
  35. package/src/utils/config.js +53 -16
  36. package/src/worker.js +305 -0
  37. package/.agents/skills/interface-design/SKILL.md +0 -391
  38. package/.agents/skills/interface-design/references/critique.md +0 -67
  39. package/.agents/skills/interface-design/references/example.md +0 -86
  40. package/.agents/skills/interface-design/references/principles.md +0 -235
  41. package/.agents/skills/interface-design/references/validation.md +0 -48
package/README.md CHANGED
@@ -2,17 +2,36 @@
2
2
 
3
3
  [kernelbot.io](https://kernelbot.io) | [npm](https://www.npmjs.com/package/kernelbot) | [GitHub](https://github.com/KernelCode/kernelbot)
4
4
 
5
- AI engineering agent — a Telegram bot backed by Claude, GPT, Gemini, or Groq with full OS control via tool use.
5
+ A multi-agent AI swarm — a Telegram bot with a smart orchestrator dispatching specialized workers powered by Claude, GPT, Gemini, or Groq with full OS control.
6
6
 
7
- Send a message in Telegram, and KernelBot will read files, write code, run commands, browse the web, manage infrastructure, and respond with the results. It's your personal engineering assistant with direct access to your machine.
7
+ Send a message and KernelBot dispatches workers that write code, run commands, open PRs, manage Docker, and browse the web autonomously in parallel.
8
+
9
+ ## How It Works
10
+
11
+ ```text
12
+ You (Telegram) → Orchestrator (Claude Opus)
13
+ ↓ dispatch_task
14
+ ┌───────────┼───────────────┐
15
+ ↓ ↓ ↓
16
+ 💻 Coding 🌐 Browser 🖥️ System 🚀 DevOps 🔍 Research
17
+ Worker Worker Worker Worker Worker
18
+ ↕ ↕ ↕ ↕ ↕
19
+ git, PRs, web search, shell, CPU, Docker, multi-source
20
+ Claude Code screenshots RAM, disk deploy, git web research
21
+ ```
22
+
23
+ KernelBot runs a **multi-agent swarm**. The **orchestrator** (always Claude Opus) understands your request and dispatches it to one or more **specialized workers** that run in parallel. Each worker has a scoped tool set and operates in the background using your chosen AI brain (Claude, GPT, Gemini, or Groq). The orchestrator coordinates, summarizes results, and keeps you informed.
8
24
 
9
25
  ## Features
10
26
 
11
- - **Multi-model support** — choose your AI brain: Anthropic (Claude), OpenAI (GPT), Google (Gemini), or Groq (Llama/Mixtral). Switch models anytime from the CLI menu
12
- - **Autonomous agent loop** — send one message and KernelBot chains tool calls until the task is done, no hand-holding needed
27
+ - **Multi-agent swarm** — orchestrator dispatches tasks to specialized workers running in parallel
28
+ - **5 worker types** — coding, browser, system, devops, and research each with scoped tools
29
+ - **Multi-model support** — workers use your chosen brain: Anthropic (Claude), OpenAI (GPT), Google (Gemini), or Groq (Llama/Mixtral). Switch anytime via `/brain`
30
+ - **Job management** — track, list, and cancel running workers with `/jobs` and `/cancel`
13
31
  - **Full shell access** — run any command, install packages, build projects, run tests
14
32
  - **File management** — read, write, and create files with automatic directory creation
15
33
  - **Web browsing** — navigate pages, extract content, take screenshots, interact with forms and buttons (Puppeteer)
34
+ - **Web search** — search the web and synthesize results from multiple sources
16
35
  - **Git workflow** — clone repos, create branches, commit, push, and view diffs
17
36
  - **GitHub integration** — create repos, open PRs, post code reviews, list and inspect pull requests
18
37
  - **JIRA integration** — read tickets, search with JQL, list assigned/project tickets (Cloud + Server)
@@ -22,109 +41,109 @@ Send a message in Telegram, and KernelBot will read files, write code, run comma
22
41
  - **System monitoring** — check CPU, RAM, disk usage, and read system logs
23
42
  - **Networking** — make HTTP requests, check ports, test and reload nginx
24
43
  - **Send images** — share screenshots and files directly in the Telegram chat
25
- - **Conversation memory** — per-chat history that persists across restarts
26
- - **Live status updates** — Claude Code activity consolidated into a single updating message instead of spam
44
+ - **Skills system** — 35+ built-in persona skills across 11 categories (engineering, design, marketing, etc.) plus custom skills you create
45
+ - **User personas** — auto-learns your preferences, expertise, and communication style across conversations
46
+ - **Smart progress** — live-updating Telegram messages show each worker's activity in real time
47
+ - **Conversation memory** — per-chat history with summarization that persists across restarts
27
48
  - **Security built-in** — user allowlist, blocked paths, dangerous operation confirmation, audit logging, secret redaction
28
49
  - **Zero config setup** — auto-detects config, prompts for missing credentials on first run
29
- - **Credential management** — auto-prompts for missing API keys (GitHub, Anthropic, Telegram, JIRA) and saves them
30
50
 
31
- ## How It Works
51
+ ## Worker Types
32
52
 
33
- ```text
34
- You (Telegram) KernelBot AI Brain (Claude / GPT / Gemini / Groq)
35
-
36
- Tools (shell, files, git, docker, browser, etc.)
37
-
38
- Claude Code CLI (coding tasks)
39
- ```
53
+ | Worker | Tools | Use Case |
54
+ | --- | --- | --- |
55
+ | **Coding** | shell, files, git, GitHub, Claude Code | Write code, fix bugs, create PRs |
56
+ | **Browser** | web search, browse, screenshot, extract, interact | Web search, scraping, screenshots |
57
+ | **System** | shell, files, process, monitor, network | OS operations, monitoring, diagnostics |
58
+ | **DevOps** | shell, files, Docker, process, monitor, network, git | Docker, deploy, infrastructure |
59
+ | **Research** | web search, browse, shell, files | Deep web research and analysis |
40
60
 
41
- KernelBot runs a **tool-use loop**: the AI decides which tools to call, KernelBot executes them on your OS, feeds results back, and the AI continues until the task is done. One message can trigger dozens of tool calls autonomously.
42
-
43
- For complex coding tasks, KernelBot can spawn **Claude Code CLI** as a sub-agent — giving it a dedicated coding environment with its own tool loop for writing, editing, and debugging code.
61
+ The orchestrator picks the right worker (or multiple workers in parallel) based on your request. You can also run `/jobs` to see what's running and `/cancel` to stop any worker.
44
62
 
45
63
  ## Tools
46
64
 
47
65
  ### File System & Shell
48
66
 
49
- | Tool | Description |
50
- | ----------------- | --------------------------------------------------- |
51
- | `execute_command` | Run any shell command (git, npm, python, etc.) |
52
- | `read_file` | Read file contents with optional line limits |
53
- | `write_file` | Write/create files, auto-creates parent directories |
54
- | `list_directory` | List directory contents, optionally recursive |
67
+ | Tool | Description |
68
+ | --- | --- |
69
+ | `execute_command` | Run any shell command (git, npm, python, etc.) |
70
+ | `read_file` | Read file contents with optional line limits |
71
+ | `write_file` | Write/create files, auto-creates parent directories |
72
+ | `list_directory` | List directory contents, optionally recursive |
55
73
 
56
74
  ### Git & GitHub
57
75
 
58
- | Tool | Description |
59
- | -------------------- | ----------------------------------------------- |
60
- | `git_clone` | Clone a repo (`org/repo` shorthand or full URL) |
61
- | `git_checkout` | Checkout or create branches |
62
- | `git_commit` | Stage all changes and commit |
63
- | `git_push` | Push current branch to remote |
64
- | `git_diff` | Show uncommitted changes |
65
- | `github_create_pr` | Create a pull request |
66
- | `github_get_pr_diff` | Get the diff of a PR |
67
- | `github_post_review` | Post a review on a PR |
68
- | `github_create_repo` | Create a new GitHub repository |
69
- | `github_list_prs` | List pull requests for a repo |
70
-
71
- ### Web Browsing
72
-
73
- | Tool | Description |
74
- | -------------------- | ------------------------------------------------------------------------- |
75
- | `browse_website` | Navigate to a URL and extract page content (title, headings, text, links) |
76
- | `screenshot_website` | Take a screenshot of a website, supports full-page and element capture |
77
- | `extract_content` | Extract specific content using CSS selectors |
78
- | `interact_with_page` | Click, type, scroll, and run JS on a webpage |
79
- | `send_image` | Send an image/screenshot directly to the Telegram chat |
76
+ | Tool | Description |
77
+ | --- | --- |
78
+ | `git_clone` | Clone a repo (`org/repo` shorthand or full URL) |
79
+ | `git_checkout` | Checkout or create branches |
80
+ | `git_commit` | Stage all changes and commit |
81
+ | `git_push` | Push current branch to remote |
82
+ | `git_diff` | Show uncommitted changes |
83
+ | `github_create_pr` | Create a pull request |
84
+ | `github_get_pr_diff` | Get the diff of a PR |
85
+ | `github_post_review` | Post a review on a PR |
86
+ | `github_create_repo` | Create a new GitHub repository |
87
+ | `github_list_prs` | List pull requests for a repo |
88
+
89
+ ### Web Browsing & Search
90
+
91
+ | Tool | Description |
92
+ | --- | --- |
93
+ | `web_search` | Search the web and return results |
94
+ | `browse_website` | Navigate to a URL and extract page content (title, headings, text, links) |
95
+ | `screenshot_website` | Take a screenshot of a website, supports full-page and element capture |
96
+ | `extract_content` | Extract specific content using CSS selectors |
97
+ | `interact_with_page` | Click, type, scroll, and run JS on a webpage |
98
+ | `send_image` | Send an image/screenshot directly to the Telegram chat |
80
99
 
81
100
  ### JIRA
82
101
 
83
- | Tool | Description |
84
- | -------------------------- | ----------------------------------------- |
85
- | `jira_get_ticket` | Get details of a specific JIRA ticket |
86
- | `jira_search_tickets` | Search tickets using JQL queries |
87
- | `jira_list_my_tickets` | List tickets assigned to the current user |
88
- | `jira_get_project_tickets` | Get tickets from a specific JIRA project |
102
+ | Tool | Description |
103
+ | --- | --- |
104
+ | `jira_get_ticket` | Get details of a specific JIRA ticket |
105
+ | `jira_search_tickets` | Search tickets using JQL queries |
106
+ | `jira_list_my_tickets` | List tickets assigned to the current user |
107
+ | `jira_get_project_tickets` | Get tickets from a specific JIRA project |
89
108
 
90
109
  ### Docker
91
110
 
92
- | Tool | Description |
93
- | ---------------- | -------------------------------------------- |
94
- | `docker_ps` | List containers |
95
- | `docker_logs` | Get container logs |
96
- | `docker_exec` | Execute a command inside a running container |
97
- | `docker_compose` | Run docker compose commands |
111
+ | Tool | Description |
112
+ | --- | --- |
113
+ | `docker_ps` | List containers |
114
+ | `docker_logs` | Get container logs |
115
+ | `docker_exec` | Execute a command inside a running container |
116
+ | `docker_compose` | Run docker compose commands |
98
117
 
99
118
  ### Process & System
100
119
 
101
- | Tool | Description |
102
- | ----------------- | ------------------------------------------------------ |
103
- | `process_list` | List running processes, optionally filter by name |
104
- | `kill_process` | Kill a process by PID or name |
120
+ | Tool | Description |
121
+ | --- | --- |
122
+ | `process_list` | List running processes, optionally filter by name |
123
+ | `kill_process` | Kill a process by PID or name |
105
124
  | `service_control` | Manage systemd services (start, stop, restart, status) |
106
125
 
107
126
  ### Monitoring
108
127
 
109
- | Tool | Description |
110
- | -------------- | ------------------------------- |
111
- | `disk_usage` | Show disk space usage |
112
- | `memory_usage` | Show RAM usage |
113
- | `cpu_usage` | Show CPU load |
114
- | `system_logs` | Read system or application logs |
128
+ | Tool | Description |
129
+ | --- | --- |
130
+ | `disk_usage` | Show disk space usage |
131
+ | `memory_usage` | Show RAM usage |
132
+ | `cpu_usage` | Show CPU load |
133
+ | `system_logs` | Read system or application logs |
115
134
 
116
135
  ### Networking
117
136
 
118
- | Tool | Description |
119
- | -------------- | ------------------------------------------ |
120
- | `check_port` | Check if a port is open and listening |
121
- | `curl_url` | Make HTTP requests and return the response |
122
- | `nginx_reload` | Test nginx config and reload if valid |
137
+ | Tool | Description |
138
+ | --- | --- |
139
+ | `check_port` | Check if a port is open and listening |
140
+ | `curl_url` | Make HTTP requests and return the response |
141
+ | `nginx_reload` | Test nginx config and reload if valid |
123
142
 
124
143
  ### Coding
125
144
 
126
- | Tool | Description |
127
- | ------------------- | ----------------------------------------------------------------------------------------- |
145
+ | Tool | Description |
146
+ | --- | --- |
128
147
  | `spawn_claude_code` | Spawn Claude Code CLI for coding tasks — writing, fixing, reviewing, and scaffolding code |
129
148
 
130
149
  ## Disclaimer
@@ -151,7 +170,7 @@ That's it. On first run, KernelBot will:
151
170
  4. Verify API connections
152
171
  5. Launch the Telegram bot
153
172
 
154
- You can change your AI provider/model anytime from the CLI menu (option 5).
173
+ You can change your AI provider/model anytime from the CLI menu (option 5) or via the `/brain` command in Telegram.
155
174
 
156
175
  ## Configuration
157
176
 
@@ -162,8 +181,10 @@ KernelBot auto-detects config from the current directory or `~/.kernelbot/`. Eve
162
181
  Set these in `.env` or as system environment variables:
163
182
 
164
183
  ```text
165
- # AI provider key (only the one matching your provider is required)
166
- ANTHROPIC_API_KEY=sk-ant-... # for Anthropic (Claude)
184
+ # Required Anthropic key is always needed (orchestrator runs on Claude)
185
+ ANTHROPIC_API_KEY=sk-ant-...
186
+
187
+ # Worker brain key (only the one matching your chosen provider is required)
167
188
  OPENAI_API_KEY=sk-... # for OpenAI (GPT)
168
189
  GOOGLE_API_KEY=AIza... # for Google (Gemini)
169
190
  GROQ_API_KEY=gsk_... # for Groq (Llama/Mixtral)
@@ -183,12 +204,25 @@ Drop a `config.yaml` in your working directory or `~/.kernelbot/` to customize b
183
204
  bot:
184
205
  name: KernelBot
185
206
 
207
+ # Orchestrator — always Anthropic (Claude), manages the swarm
208
+ orchestrator:
209
+ model: claude-opus-4-0-20250514
210
+ max_tokens: 8192
211
+ temperature: 0.3
212
+ max_tool_depth: 15
213
+
214
+ # Worker brain — your choice of provider/model for all workers
186
215
  brain:
187
216
  provider: anthropic # anthropic | openai | google | groq
188
217
  model: claude-sonnet-4-20250514
189
218
  max_tokens: 8192
190
219
  temperature: 0.3
191
- max_tool_depth: 25 # max tool calls per message
220
+
221
+ # Swarm settings
222
+ swarm:
223
+ max_concurrent_jobs: 3
224
+ job_timeout_seconds: 300
225
+ cleanup_interval_minutes: 30
192
226
 
193
227
  telegram:
194
228
  allowed_users: [] # empty = allow all (dev mode)
@@ -219,11 +253,40 @@ conversation:
219
253
 
220
254
  ## Telegram Commands
221
255
 
222
- | Command | Description |
223
- | ---------- | ---------------------------------- |
224
- | `/clean` | Clear conversation and start fresh |
225
- | `/history` | Show message count in memory |
226
- | `/help` | Show help message |
256
+ | Command | Description |
257
+ | --- | --- |
258
+ | `/brain` | Show current AI model and switch provider/model |
259
+ | `/skills` | Browse and activate persona skills |
260
+ | `/skills reset` | Clear active skill back to default |
261
+ | `/jobs` | List running and recent jobs |
262
+ | `/cancel` | Cancel running job(s) |
263
+ | `/context` | Show conversation context and brain info |
264
+ | `/clean` | Clear conversation and start fresh |
265
+ | `/history` | Show message count in memory |
266
+ | `/browse <url>` | Browse a website and get a summary |
267
+ | `/screenshot <url>` | Take a screenshot of a website |
268
+ | `/extract <url> <selector>` | Extract content using CSS selector |
269
+ | `/help` | Show help message |
270
+
271
+ ## Skills
272
+
273
+ KernelBot comes with **35+ built-in persona skills** across 11 categories that change the agent's expertise and communication style. Use `/skills` to browse and activate them.
274
+
275
+ | Category | Examples |
276
+ | --- | --- |
277
+ | Engineering | Sr. Frontend, Sr. Backend, DevOps, Mobile, Security, Data Engineer |
278
+ | Design | UI/UX Designer, Graphic Designer, Product Designer |
279
+ | Marketing | Content Marketer, SEO Specialist, Growth Hacker, Social Media |
280
+ | Business | Product Manager, Business Analyst, Startup Advisor, Project Manager |
281
+ | Writing | Technical Writer, Copywriter, Creative Writer, Academic Writer |
282
+ | Data & AI | Data Scientist, ML Engineer, BI Analyst |
283
+ | Finance | Financial Analyst, Accountant, Crypto & DeFi Advisor |
284
+ | Legal | Legal Advisor, Contract Reviewer |
285
+ | Education | Tutor, Curriculum Designer, Language Teacher |
286
+ | Healthcare | Medical Researcher, Health & Wellness Advisor |
287
+ | Creative | Video Producer, Music Producer, Photographer |
288
+
289
+ You can also create **custom skills** with your own system prompts — type or upload a `.md` file via the `/skills` menu.
227
290
 
228
291
  ## Security
229
292
 
@@ -233,6 +296,8 @@ conversation:
233
296
  - **Browser URL blocklist** — internal/private network addresses are blocked from browsing.
234
297
  - **Audit logging** — every tool call is logged to `kernel-audit.log` with user, tool, params, result, and duration. Secrets in params are automatically redacted.
235
298
  - **Command timeout** — shell commands are killed after 30 seconds by default.
299
+ - **Job timeout** — workers are automatically terminated after configurable timeout (default 300s).
300
+ - **Circuit breaker** — workers that fail 3 consecutive tool call iterations are stopped to prevent runaway loops.
236
301
 
237
302
  ## JIRA Integration
238
303
 
@@ -252,52 +317,62 @@ JIRA_API_TOKEN=your-api-token
252
317
 
253
318
  If credentials are missing when a JIRA tool is called, KernelBot will prompt for them via Telegram.
254
319
 
255
- ### Available Tools
256
-
257
- - **`jira_get_ticket`** — Fetch a single ticket by key (e.g. `PROJ-123`). Returns summary, description, status, assignee, priority, and dates.
258
- - **`jira_search_tickets`** — Search using JQL (e.g. `project = PROJ AND status = "In Progress"`). Returns up to `max_results` tickets.
259
- - **`jira_list_my_tickets`** — List tickets assigned to the current user (or a specified assignee).
260
- - **`jira_get_project_tickets`** — List all tickets in a project, ordered by last update.
261
-
262
320
  ## Project Structure
263
321
 
264
322
  ```text
265
323
  KernelBot/
266
324
  ├── bin/
267
- │ └── kernel.js # Entry point + CLI menu
325
+ │ └── kernel.js # Entry point + CLI menu
268
326
  ├── src/
269
- │ ├── agent.js # AI tool-use loop (provider-agnostic)
270
- │ ├── bot.js # Telegram bot (polling, auth, message handling)
271
- │ ├── coder.js # Claude Code CLI spawner + smart output
272
- │ ├── conversation.js # Per-chat conversation history
327
+ │ ├── agent.js # OrchestratorAgent swarm brain, job lifecycle, worker spawning
328
+ │ ├── worker.js # WorkerAgent scoped agent loop, cancellation, circuit breaker
329
+ │ ├── bot.js # Telegram bot (polling, auth, commands, batching)
330
+ │ ├── coder.js # Claude Code CLI spawner + smart output
331
+ │ ├── conversation.js # Per-chat conversation history + summarization
332
+ │ ├── persona.js # UserPersonaManager — auto-learning user profiles
333
+ │ ├── intents/
334
+ │ │ ├── detector.js # Web search/browse intent detection
335
+ │ │ └── planner.js # Execution plan generation for intents
273
336
  │ ├── prompts/
274
- │ │ └── system.js # System prompt
337
+ │ │ ├── orchestrator.js # Orchestrator system prompt
338
+ │ │ ├── workers.js # Per-worker-type system prompts
339
+ │ │ └── system.js # Core tool instructions
275
340
  │ ├── providers/
276
- │ │ ├── models.js # Provider & model catalog
277
- │ │ ├── base.js # Abstract provider interface
278
- │ │ ├── anthropic.js # Anthropic (Claude) provider
279
- │ │ ├── openai-compat.js # OpenAI / Gemini / Groq provider
280
- │ │ └── index.js # Provider factory
341
+ │ │ ├── models.js # Provider & model catalog
342
+ │ │ ├── base.js # Abstract provider interface
343
+ │ │ ├── anthropic.js # Anthropic (Claude) provider
344
+ │ │ ├── openai-compat.js # OpenAI / Gemini / Groq provider
345
+ │ │ └── index.js # Provider factory
281
346
  │ ├── security/
282
- │ │ ├── auth.js # User allowlist
283
- │ │ ├── audit.js # Tool call audit logging
284
- │ │ └── confirm.js # Dangerous operation detection
347
+ │ │ ├── auth.js # User allowlist
348
+ │ │ ├── audit.js # Tool call audit logging
349
+ │ │ └── confirm.js # Dangerous operation detection
350
+ │ ├── skills/
351
+ │ │ ├── catalog.js # 35+ built-in persona skills
352
+ │ │ └── custom.js # Custom skill CRUD + unified lookups
353
+ │ ├── swarm/
354
+ │ │ ├── job.js # Job class (state machine, transitions, summary)
355
+ │ │ ├── job-manager.js # JobManager (EventEmitter, CRUD, cleanup, timeouts)
356
+ │ │ └── worker-registry.js # Worker type → tool category mapping
285
357
  │ ├── tools/
286
- │ │ ├── os.js # File system + shell tools
287
- │ │ ├── git.js # Git operations
288
- │ │ ├── github.js # GitHub API (PRs, repos, reviews)
289
- │ │ ├── browser.js # Web browsing (Puppeteer)
290
- │ │ ├── docker.js # Docker management
291
- │ │ ├── process.js # Process management
292
- │ │ ├── monitor.js # System monitoring (CPU, RAM, disk)
293
- │ │ ├── network.js # Network tools (HTTP, ports, nginx)
294
- │ │ ├── coding.js # Claude Code CLI handler
295
- │ │ ├── jira.js # JIRA ticket reading + search
296
- │ │ └── index.js # Tool registry + dispatcher
358
+ │ │ ├── categories.js # Tool category definitions + keyword matching
359
+ │ │ ├── orchestrator-tools.js # dispatch_task, list_jobs, cancel_job
360
+ │ │ ├── os.js # File system + shell tools
361
+ │ │ ├── git.js # Git operations
362
+ │ │ ├── github.js # GitHub API (PRs, repos, reviews)
363
+ │ │ ├── browser.js # Web browsing + search (Puppeteer)
364
+ │ │ ├── docker.js # Docker management
365
+ │ │ ├── process.js # Process management
366
+ │ │ ├── monitor.js # System monitoring (CPU, RAM, disk)
367
+ │ │ ├── network.js # Network tools (HTTP, ports, nginx)
368
+ │ │ ├── coding.js # Claude Code CLI handler
369
+ │ │ ├── jira.js # JIRA ticket reading + search
370
+ │ │ ├── persona.js # User persona update tool
371
+ │ │ └── index.js # Tool registry + dispatcher
297
372
  │ └── utils/
298
- │ ├── config.js # Config loading (auto-detect + prompt)
299
- │ ├── display.js # CLI display (logo, spinners, banners)
300
- │ └── logger.js # Winston logger
373
+ │ ├── config.js # Config loading (auto-detect + prompt)
374
+ │ ├── display.js # CLI display (logo, spinners, banners)
375
+ │ └── logger.js # Winston logger
301
376
  ├── config.example.yaml
302
377
  ├── .env.example
303
378
  └── package.json
@@ -306,13 +381,13 @@ KernelBot/
306
381
  ## Requirements
307
382
 
308
383
  - Node.js 18+
309
- - AI provider API key (one of):
310
- - [Anthropic API key](https://console.anthropic.com/) (Claude)
384
+ - [Anthropic API key](https://console.anthropic.com/) — always required (orchestrator runs on Claude)
385
+ - [Telegram Bot Token](https://t.me/BotFather)
386
+ - Chromium/Chrome (for browser tools — installed automatically by Puppeteer)
387
+ - Worker brain API key (optional if using Anthropic for workers too):
311
388
  - [OpenAI API key](https://platform.openai.com/api-keys) (GPT)
312
389
  - [Google AI API key](https://aistudio.google.com/apikey) (Gemini)
313
390
  - [Groq API key](https://console.groq.com/keys) (Llama/Mixtral)
314
- - [Telegram Bot Token](https://t.me/BotFather)
315
- - Chromium/Chrome (for browser tools — installed automatically by Puppeteer)
316
391
  - [GitHub Token](https://github.com/settings/tokens) (optional, for GitHub tools)
317
392
  - [JIRA API Token](https://id.atlassian.net/manage-profile/security/api-tokens) (optional, for JIRA integration)
318
393
  - [Claude Code CLI](https://www.npmjs.com/package/@anthropic-ai/claude-code) (optional, for coding tasks)