Built from the ground up as an agent engine, not an editor with agents bolted on.
The engine sits at the center. Three communication channels — Agent, Plugin, Client — bridge it to the outside world. Agents run code. Plugins extend the engine itself. Clients give you control through any interface.
73 controllers · 134 services · 6 managers · 625+ tools — decomposed by architectural role, not just function
10 architectural planes · 50 cards · 625+ tools · job is durable work · run is one executor attempt · waits hold a job idle until dependencies clear
how requests flow from transport to persistence, layer by layer
controllers/ — 81 domain controllers /pluginui/:pluginId/* — static assets services/ — business logic sockets/handlers/message-router.ts handlers/message-handlers.ts applicationEventBus — request lifecycle events notificatinHandler.cli.ts — main router WS · HTTP · IPC transports share logic agentService.ts — marketplace sync, YAML parse agentFlowRuntimeService.ts — flow execution swarmManager.ts — swarm coordination agentDeliberationService.ts agentPortfolioService.ts episodicMemoryDataService — append-only logs persistentMemoryPipelineService — structured contextAssemblyService — CAE (1000+ lines) environmentsServices.ts — 2500+ lines providerRegistryService.ts — cloud + local environmentRestartService.ts JsonStore — CRUD + filter + sequence hostBridge.sqliteRun/Get/All/Exec each actor: owns · reads · writes · hands off · emits
handler.onMessage — dispatched events AgentProcessManager — spawn instruction tool_executions — every tool call session_messages — assistant output tool.called event tool.completed event items — function_call outputs tool_executions — call history episodic · persistent · context assembly — how agents remember
.codebolt/memory/episodic/{id}.json .codebolt/persistent_memory/{id}.json embeddingService — local ONNX models vectordbService — sqlite-vec backend .codebolt/rules/{rule-id}.json plugin lifecycle · provider registry · heartbeat monitoring
~/.codebolt/plugins/ — global {project}/.codeboltPlugins/ — per-project /plugin — server WS safeCreateSnapshotArchive importSnapshotBundle click a category to see its tools · every capability available to an agent
fs.readFile fs.createFile fs.updateFile fs.deleteFile fs.readManyFiles fs.searchFiles fs.grepSearch fs.listCodeDefinitions git.init git.status git.add git.commit git.diff git.push git.pull git.checkout git.branch codebaseSearch.search codebaseSearch.searchMcpTools codeutils.parseCode codeutils.analyzeCode codeutils.refactorCode codeutils.formatCode codemap.create codemap.get codemap.list codemap.update codemap.delete codemap.save terminal.executeCommand terminal.interrupt browser.navigate browser.getUrl browser.close browser.click browser.type browser.scroll browser.enter browser.screenshot browser.getHtml · getMarkdown · getContent mcp.execute mcp.configure mcp.listServers mcp.connectServer sideExecution.start sideExecution.stop sideExecution.status sideExecution.listActionBlocks actionBlock.create actionBlock.execute actionBlock.list llm.inference llm.getModelConfig tokenizer.countTokens tokenizer.estimateTokens vectordb.addVectorItem vectordb.queryVectorItem vectordb.queryVectorItems vectordb.getVector rag.retrieve rag.augment kg.createInstanceTemplate kg.createInstance kg.getInstance kg.addMemoryRecord kg.addEdge kg.listMemoryRecords kg.executeView knowledge.createCollection knowledge.listCollections knowledge.getCollection knowledge.deleteCollection knowledge.addDocument knowledge.queryKnowledge knowledge.updateDocument memory.jsonSave memory.jsonUpdate memory.jsonDelete memory.jsonList memory.todoSave memory.todoUpdate · delete · list memory.markdownSave memory.markdownUpdate · delete · list episodicMemory.createMemory episodicMemory.appendEvent episodicMemory.queryEvents episodicMemory.listMemories episodicMemory.archiveMemory persistentMemory.createMemory persistentMemory.getMemory persistentMemory.listMemories persistentMemory.updateMemory persistentMemory.retrieveMemory memoryIngestion.createPipeline memoryIngestion.executePipeline contextAssembly.assemble contextAssembly.validate contextAssembly.getMemoryTypes contextAssembly.evaluateRules contextAssembly.getRequiredVariables contextRuleEngine.createRules contextRuleEngine.updateRules contextRuleEngine.deleteRules contextRuleEngine.listRules contextRuleEngine.evaluateRules contextRuleEngine.getPossibleVariables kvStore.createInstance kvStore.set kvStore.get eventLog.createInstance eventLog.appendEvent eventLog.appendEvents eventLog.queryEvents eventLog.getStats agent.find agent.start agent.list agent.details thread.createThread thread.createStartThread thread.createBackgroundThread thread.listThreads thread.getThread thread.startThread thread.updateThread thread.deleteThread thread.getMessages thread.updateStatus backgroundChildThreads.start backgroundChildThreads.stop backgroundChildThreads.status backgroundChildThreads.list swarm.createSwarm swarm.registerAgent swarm.createTeam swarm.joinTeam swarm.createRole swarm.assignRole swarm.createVacancy swarm.applyVacancy agentDeliberation.createDeliberation agentDeliberation.getDeliberation agentDeliberation.listDeliberations agentDeliberation.updateDeliberation agentDeliberation.respondDeliberation agentDeliberation.voteDeliberation agentDeliberation.getWinner reviewMergeRequest.createRequest reviewMergeRequest.getRequest reviewMergeRequest.listRequests reviewMergeRequest.updateRequest reviewMergeRequest.addFeedback agentPortfolio.getPortfolio agentPortfolio.getConversations agentPortfolio.updateProfile agentPortfolio.addKarma agentPortfolio.getKarmaHistory agentPortfolio.addAppreciation agentPortfolio.addTalent agentPortfolio.endorseTalent agentPortfolio.getTalents agentPortfolio.getRanking agentPortfolio.addTestimonial agentPortfolio.updateTestimonial agentPortfolio.deleteTestimonial agentEventQueue.addEvent agentEventQueue.sendAgentMessage agentEventQueue.getPendingEvents agentEventQueue.getStats agentEventQueue.waitNextEvent agentEventQueue.acknowledgeEvent task.createTask task.updateTask task.deleteTask task.getTask task.listTasks task.assignTask task.executeTask job.createJob job.getJob job.updateJob job.deleteJob job.listJobs job.createJobGroup job.addDependency job.removeDependency job.addBid job.bidWithdraw job.bidAccept job.lockJob job.unlockJob actionPlan.createPlan actionPlan.addTask actionPlan.startTask actionPlan.updatePlan actionPlan.getPlanDetails actionPlan.getAllPlans todo.createTodo todo.updateTodo todo.deleteTodo todo.getTodo todo.listTodos todo.completeTodo requirementPlan.createPlan requirementPlan.getPlan requirementPlan.updatePlan requirementPlan.listPlans requirementPlan.addSection requirementPlan.updateSection requirementPlan.removeSection requirementPlan.reorderSections calendar.createEvent calendar.updateEvent calendar.deleteEvent calendar.getEvent calendar.listEvents calendar.getEventsInRange calendar.getUpcomingEvents calendar.markEventComplete calendar.rsvpEvent roadmap.createPhase roadmap.updatePhase roadmap.createFeature roadmap.updateFeature roadmap.getFeatures roadmap.getPhases roadmap.getRoadmap roadmap.createIdea roadmap.getIdeas roadmap.reviewIdea hook.createHook hook.listHooks hook.getHook hook.deleteHook hook.initialize chat.sendMessage chat.notify chat.askQuestion chat.confirm chat.getHistory chat.waitForReply chat.stopProcess mail.sendMessage mail.replyMessage mail.fetchInbox mail.createThread mail.getThread mail.summarizeThread mail.registerAgent mail.listAgents channel.createChannel channel.listChannels channel.sendMessage groupFeedback.createFeedback groupFeedback.getFeedback groupFeedback.listFeedback groupFeedback.respondFeedback groupFeedback.replyFeedback groupFeedback.updateSummary groupFeedback.updateStatus projectStructure.createPackage projectStructure.listPackages projectStructure.addDependency projectStructure.addRoute projectStructure.addTable fileUpdateIntent.createIntent fileUpdateIntent.checkOverlap environment.createEnv environment.getEnv environment.listEnvs environment.updateEnv environment.deleteEnv environment.startEnv environment.stopEnv environment.restartEnv environment.getStatus environment.getProviders orchestrator.createOrchestrator orchestrator.getOrchestrator orchestrator.listOrchestrators orchestrator.updateOrchestrator orchestrator.deleteOrchestrator orchestrator.getSettings orchestrator.updateSettings orchestrator.updateStatus autoTesting.createTestSuite autoTesting.listTestSuites autoTesting.createTestCase autoTesting.listTestCases autoTesting.createTestRun autoTesting.updateTestRun capability.listCapabilities capability.getCapabilityDetail capability.startCapability capability.stopCapability capability.getExecutionStatus state.setState state.getState state.updateState state.deleteState state.listStates debug.log debug.getDebugInfo crawler.crawl crawler.extractContent crawler.extractLinks crawler.getMetadata crawler.stopCrawl userMessage.create userMessage.append userMessage.getHistory userMessage.clear userMessageUtils.format userMessageUtils.parse userMessageUtils.merge Glob — glob patterns Grep — regex content SearchFiles CodebaseSearch ListCodeDefinitionNames SearchMcpTool notificatinHandler.cli.ts — main router "Every tool is scoped by environment capabilities. allTools vs allSearchableTools — ~30 tools are actively given to the LLM per turn while 600+ are discoverable via ToolSearchEngine. Same SDK at every scale: codebolt.fs.readFile works identically in a CLI script, an IDE agent, a Docker sandbox, or a remote cloud environment."
Other tools are Layer 1-2. Agent frameworks are Layer 2 only. Codebolt is all five.
The Agent Channel (codeboltjs) lets external agents connect as child processes with 63+ API modules. The Plugin Channel (plugin SDK) provides WebSocket actions, multiplexed events, and HTTP REST — enabling applications to run inside the engine without separate agent instances. The Client Channel (client SDK) connects UIs with 72 REST modules and 33 WebSocket modules. Agents do work. Plugins connect the engine to the world. Clients give you control.
The engine never calls platform APIs directly. It defines a HostBridge interface for process spawning, SQLite, Kuzu graph DB, and ONNX inference. Each runtime implements its own bridge: Electron uses UtilityProcess and TypeORM, CLI uses child_process and better-sqlite3, TUI connects via WebSocket proxy. One codebase powers desktop IDE, CLI, headless server, and TUI with identical capabilities.
Providers manage compute environments. The Docker provider creates containers running a dockerserver that connects back to the main instance. Each environment has a full lifecycle (CREATED → RUNNING → STOPPED) with heartbeat monitoring. The Narrative Engine snapshots state per-environment, and git bundles transfer state between them. This enables hierarchical setups where one Codebolt instance orchestrates many others.
Agents are discovered from a marketplace, cached locally, and spawned as child processes. They connect via codeboltjs, call waitForReady(), then handle messages and invoke 63+ API modules. Agents can spawn child agents, participate in swarms, join deliberation councils, create review-merge requests, and manage environments — all through the SDK.
Plugins are discovered from project .codeboltPlugins/ and global ~/.codebolt/plugins/. Each declares itself in package.json with a codebolt.plugin key. The PluginProcessManager handles lifecycle and trigger-based auto-start. Plugins can do anything agents can, plus subscribe to real-time events and make HTTP API calls. They run inside the engine — no separate instance needed.
Agents communicate indirectly through structured shared state instead of direct message passing. Each agent reads from and writes to a shared environment, allowing coordination to emerge without explicit messaging. This is how biological swarms scale to millions — and how Codebolt scales beyond message-passing architectures.
Agents deposit pheromones on tasks and files to signal interest and ownership. Configurable pheromone types. Aggregation system for conflict resolution. Lock/unlock mechanisms for exclusive access. This prevents coordination breakdown when agents independently target the same work.
A Rust-based flight recorder with shadow git for snapshot versioning. Narrative hierarchy: Objective → Thread → Agent Run → Snapshot. Per-thread commit branches. Git bundles for cross-environment transfer. Full execution trace system. Every change carries its narrative — the intent behind it, not just the diff.
Two-level architecture. Local Rust engine instances assess structural, scope, constraint, and coverage drift within individual agent contexts. The global JavaScript layer aggregates signals across all agents, detecting systemic drift that no single agent would catch.
Structured deliberations: propose options, respond, vote, reach consensus. Types: decision, review, brainstorm, approval, vote. All stored per-project and fully traceable. Agents make architectural decisions collectively, not by one agent guessing.