@lakitu/sdk 0.1.3 → 0.1.4

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 (2) hide show
  1. package/README.md +85 -423
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  # @lakitu/sdk
6
6
 
7
- > **The Professional OS for Autonomous AI Agents**
7
+ > Self-hosted AI agent runtime for [Convex](https://convex.dev) + [E2B](https://e2b.dev)
8
8
 
9
- Lakitu is a framework for building AI agents that actually finish what they start. While most agents suffer from "agentic amnesia"—forgetting their plan halfway through complex tasks—Lakitu provides the execution environment, structured memory, and competency system that transforms unreliable chatbots into autonomous professionals.
9
+ Lakitu is a framework for AI agents that execute code instead of making tool calls. The agent writes TypeScript, imports capabilities from KSA modules, and runs in an isolated E2B sandbox with its own filesystem, terminal, and database.
10
10
 
11
11
  ```bash
12
12
  npx @lakitu/sdk init
@@ -14,469 +14,164 @@ npx @lakitu/sdk init
14
14
 
15
15
  ---
16
16
 
17
- ## The Problem with Current AI Agents
17
+ ## Why Lakitu?
18
18
 
19
- Today's coding agents fail in predictable ways:
19
+ **The core problem:** AI coding agents forget their plan halfway through complex tasks, corrupt the host environment, and hallucinate progress they haven't made.
20
20
 
21
- | Failure Mode | What Happens | Root Cause |
22
- |--------------|--------------|------------|
23
- | **Agentic Amnesia** | Agent completes 30% of work, declares victory | Context window fills with noise, plan is forgotten |
24
- | **Environment Corruption** | Agent breaks the host system | No execution isolation |
25
- | **Behavioral Drift** | Agent ignores instructions over time | Competencies buried in monolithic prompts |
26
- | **State Blindness** | Agent hallucinates progress | No structured state to verify against |
21
+ **Lakitu's solution:** Give the agent an isolated computer (E2B sandbox), structured capabilities (KSA files), persistent memory (Beads task graph), and verifiable state (Convex database).
27
22
 
28
- Lakitu solves each of these with four integrated systems:
29
-
30
- ```
31
- ┌─────────────────────────────────────────────────────────────────────┐
32
- │ LAKITU FRAMEWORK │
33
- ├─────────────────────────────────────────────────────────────────────┤
34
- │ │
35
- │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────┐ │
36
- │ │ E2B Sandbox │ │ KSA Files │ │ Beads │ │ Convex │ │
37
- │ │ (Security) │ │ (Competency) │ │ (Memory) │ │(State) │ │
38
- │ └──────────────┘ └──────────────┘ └──────────────┘ └────────┘ │
39
- │ │ │ │ │ │
40
- │ ▼ ▼ ▼ ▼ │
41
- │ Hardware-level Structured Git-backed Real-time │
42
- │ isolation via behavioral task graph reactive │
43
- │ Firecracker configuration with decay database │
44
- │ microVMs & modular skills & forensics │
45
- │ │
46
- └─────────────────────────────────────────────────────────────────────┘
47
- ```
23
+ | Component | What it solves |
24
+ |-----------|----------------|
25
+ | **E2B Sandbox** | Agent gets its own VM—can't break your machine. Boots in 150ms. |
26
+ | **KSA Files** | Agent capabilities defined in code, not buried in prompts. Testable, version-controlled. |
27
+ | **Beads** | Git-backed task graph. Agent always knows what's done, what's blocked, what's next. |
28
+ | **Convex** | Real-time database in the sandbox. Agent can verify actual state, not just claim progress. |
48
29
 
49
30
  ---
50
31
 
51
- ## The Code Execution Model
52
-
53
- Traditional agents use JSON tool calls. Lakitu agents write and execute code:
32
+ ## Code Execution vs Tool Calls
54
33
 
34
+ Most agent frameworks use JSON tool calls:
35
+ ```json
36
+ { "tool": "readFile", "args": { "path": "app.ts" } }
55
37
  ```
56
- Traditional Agent: Lakitu Agent:
57
- ┌───────────────────┐ ┌───────────────────┐
58
- │ LLM Response │ │ LLM Response │
59
- │ { │ │ ```typescript │
60
- │ "tool": "x", │ vs │ import { x } │
61
- │ "args": {...} │ │ await x(...) │
62
- │ } │ │ ``` │
63
- └────────┬──────────┘ └────────┬──────────┘
64
- │ │
65
- Parse JSON Execute TypeScript
66
- Route to executor in E2B sandbox
67
- │ │
68
- ┌────▼────┐ ┌───────▼───────┐
69
- │ Limited │ │ Full Computer │
70
- │ Actions │ │ File, Shell, │
71
- └─────────┘ │ Browser, etc. │
72
- └───────────────┘
73
- ```
74
-
75
- **Why code execution?**
76
-
77
- - **Token Efficient** — No tool schemas sent every request (saves 40-60% tokens)
78
- - **Composable** — Chain operations naturally: `const data = await fetch(); await process(data);`
79
- - **Debuggable** — See exactly what code ran, not just tool call logs
80
- - **Model Agnostic** — Any LLM that generates code works
81
-
82
- ---
83
-
84
- ## The Four Pillars
85
-
86
- ### 1. E2B Sandbox — Hardware-Level Security
87
-
88
- Agents need filesystem access and terminal commands. Running this on your machine is dangerous. Lakitu uses [E2B](https://e2b.dev) sandboxes powered by **Firecracker microVMs**—the same technology AWS uses for Lambda.
89
-
90
- | Metric | Docker | E2B Firecracker |
91
- |--------|--------|-----------------|
92
- | Startup | 500ms - 2s | **~150ms** |
93
- | Isolation | OS-level (namespaces) | **Hardware-level (KVM)** |
94
- | Security | Process boundaries | **Full VM isolation** |
95
- | Persistence | Ephemeral | **Up to 14 days** |
96
-
97
- The agent gets its own cloud computer where it can install packages, run tests, and verify actions—without any risk to your environment.
98
38
 
39
+ Lakitu agents write code:
99
40
  ```typescript
100
- // Agent writes code that executes in the sandbox
101
41
  import { file, shell } from './ksa';
102
42
 
103
- await file.write('app.ts', code);
43
+ const code = await file.read('app.ts');
44
+ await file.write('app.ts', fixedCode);
104
45
  const result = await shell.exec('bun test');
105
-
106
- if (result.exitCode !== 0) {
107
- // Agent can read errors and self-correct
108
- const errors = await file.read('test-output.log');
109
- // ... fix and retry
110
- }
111
- ```
112
-
113
- ### 2. KSA Files — Structured Competency
114
-
115
- The "monolithic prompt" problem: instructions, persona, and tool definitions crammed into one system message leads to behavioral drift. Lakitu introduces **KSA (Knowledge, Skills, and Abilities) files**—a framework borrowed from industrial-organizational psychology.
116
-
117
- | Component | Definition | Agent Example |
118
- |-----------|------------|---------------|
119
- | **Knowledge** | Theoretical understanding | "TypeScript generics", "REST API design" |
120
- | **Skills** | Practical application | "Writing unit tests", "Database migrations" |
121
- | **Abilities** | Underlying capabilities | "Multi-step reasoning", "Self-correction" |
122
-
123
- Instead of prose prompts, you define machine-readable competency files:
124
-
125
- ```typescript
126
- import { defineKSA, fn, service } from "@lakitu/sdk";
127
-
128
- export const migrationKSA = defineKSA("database-migrations")
129
- .description("Perform zero-downtime database migrations")
130
- .category("skills")
131
-
132
- .fn("planMigration", fn()
133
- .description("Analyze schema changes and create migration plan")
134
- .param("currentSchema", { type: "string", required: true })
135
- .param("targetSchema", { type: "string", required: true })
136
- .impl(service("services.Migration.internal.plan"))
137
- )
138
-
139
- .fn("executeMigration", fn()
140
- .description("Run migration with rollback capability")
141
- .param("plan", { type: "object", required: true })
142
- .param("dryRun", { type: "boolean", default: true })
143
- .impl(service("services.Migration.internal.execute"))
144
- )
145
-
146
- .build();
147
- ```
148
-
149
- This achieves **behavioral firmware**—stable, testable, version-controlled agent capabilities.
150
-
151
- ### 3. Beads — Git-Backed Task Memory
152
-
153
- Markdown todo lists fail because they're unstructured and fall out of sync. Agents using them complete a subtask, forget the six-phase plan, and declare victory at 30%.
154
-
155
- **Beads** is a git-backed graph issue tracker designed for AI agents:
156
-
157
- ```bash
158
- bd init # Initialize task database
159
- bd create "Migrate to Riverpod" -t epic
160
- bd create "Setup dependencies" --parent bd-a1b2
161
- bd ready # List unblocked tasks
162
- bd update bd-c3d4 --status in_progress
163
- bd close bd-c3d4 --reason "Migration complete"
164
- bd compact # Summarize old tasks, preserve context
165
- ```
166
-
167
- **Key features:**
168
-
169
- - **Dependency-aware**: `bd ready` returns only unblocked tasks
170
- - **Hash-based IDs**: No merge conflicts in multi-agent workflows
171
- - **Semantic decay**: `bd compact` summarizes 100 lines of history into 5 lines of context
172
- - **Forensic audit**: Every task change is tracked in git
173
-
174
- ```
175
- ┌─────────────────────────────────────────────────────────────────┐
176
- │ BEADS TASK GRAPH │
177
- ├─────────────────────────────────────────────────────────────────┤
178
- │ │
179
- │ [Epic: Migrate App] │
180
- │ │ │
181
- │ ┌────┴────┐ │
182
- │ ▼ ▼ │
183
- │ [Setup] [Core Migration] │
184
- │ │ │ │
185
- │ ▼ ┌────┴────┐ │
186
- │ ✓ [Service A] [Service B] ← blocked by Service A │
187
- │ │ │
188
- │ ▼ │
189
- │ [discovered: memory leak] ← auto-created during work │
190
- │ │
191
- └─────────────────────────────────────────────────────────────────┘
192
46
  ```
193
47
 
194
- ### 4. Convex — Localized Real-Time State
195
-
196
- For agents to work as collaborative partners, they need more than filesthey need a **reactive state layer**. Lakitu deploys a localized [Convex](https://convex.dev) backend inside the sandbox.
197
-
198
- **Why this matters:**
199
-
200
- - **State Persistence**: Complex application state survives process restarts
201
- - **Reactive Orchestration**: Database changes trigger functions—coordinate multi-agent swarms
202
- - **Verification**: Agent can check actual state vs. claimed progress (prevents hallucinated completion)
203
- - **Full-Stack Autonomy**: Agent can develop, deploy, and manage entire applications
204
-
205
- ```typescript
206
- // Agent stores structured state, not just files
207
- await ctx.runMutation(api.tasks.complete, {
208
- taskId: "bd-a1b2",
209
- result: { filesChanged: 3, testsPass: true }
210
- });
211
-
212
- // Other agents (or humans) see updates instantly
213
- const status = await ctx.runQuery(api.project.status);
214
- // { completed: 23, remaining: 4, blocked: 1 }
215
- ```
48
+ **Why this is better:**
49
+ - No tool schemas sent every request (saves 40-60% tokens)
50
+ - Natural compositionchain operations like normal code
51
+ - See exactly what ran, not just "tool was called"
52
+ - Works with any LLM that generates code
216
53
 
217
54
  ---
218
55
 
219
56
  ## Quick Start
220
57
 
221
- ### Installation
222
-
223
- ```bash
224
- npm install @lakitu/sdk
225
- # or
226
- bun add @lakitu/sdk
227
- ```
228
-
229
- ### Initialize in Your Convex Project
58
+ ### 1. Initialize
230
59
 
231
60
  ```bash
232
61
  npx @lakitu/sdk init
233
62
  ```
234
63
 
235
- This creates:
236
- ```
237
- convex/
238
- └── lakitu/
239
- ├── config.ts # Framework configuration
240
- └── example.ts # Example KSA to get started
241
- ```
64
+ Creates `convex/lakitu/config.ts` and an example KSA.
242
65
 
243
- ### Build Your Sandbox Template
66
+ ### 2. Build sandbox template
244
67
 
245
68
  ```bash
246
69
  npx @lakitu/sdk build
247
70
  ```
248
71
 
249
- This:
250
- 1. Starts a local Convex backend
251
- 2. Pre-deploys your functions
252
- 3. Builds an E2B template with everything baked in
253
- 4. Sandboxes boot in ~150ms with functions ready
72
+ Pre-deploys Convex functions into an E2B template. Sandboxes boot instantly with everything ready.
254
73
 
255
- ### Configure
256
-
257
- Edit `convex/lakitu/config.ts`:
74
+ ### 3. Configure
258
75
 
259
76
  ```typescript
77
+ // convex/lakitu/config.ts
260
78
  import { Lakitu } from "@lakitu/sdk";
261
79
 
262
80
  export default Lakitu.configure({
263
81
  template: "lakitu",
264
82
  model: "anthropic/claude-sonnet-4-20250514",
265
-
266
- ksas: [
267
- // Core capabilities
268
- "file", "shell", "browser", "beads",
269
-
270
- // Your custom KSAs
271
- "./migrations",
272
- "./testing",
273
- ],
274
-
275
- pool: {
276
- min: 0,
277
- max: 5,
278
- idleTimeout: 300_000,
279
- },
83
+ ksas: ["file", "shell", "browser", "beads"],
280
84
  });
281
85
  ```
282
86
 
283
87
  ---
284
88
 
285
- ## CLI Reference
286
-
287
- | Command | Description |
288
- |---------|-------------|
289
- | `npx @lakitu/sdk init` | Initialize Lakitu in your Convex project |
290
- | `npx @lakitu/sdk init --dir ./convex` | Specify custom Convex directory |
291
- | `npx @lakitu/sdk build` | Build E2B template (base + custom) |
292
- | `npx @lakitu/sdk build --base` | Build base template only |
293
- | `npx @lakitu/sdk build --custom` | Build custom template only |
294
- | `npx @lakitu/sdk publish` | Manage E2B templates |
295
-
296
- ---
297
-
298
- ## KSA SDK Reference
89
+ ## Defining KSAs
299
90
 
300
- ### Defining a KSA
91
+ KSAs (Knowledge, Skills, Abilities) are capability modules. Instead of prompt engineering, you define what the agent can do in TypeScript:
301
92
 
302
93
  ```typescript
303
- import { defineKSA, fn, service, primitive, composite } from "@lakitu/sdk";
94
+ import { defineKSA, fn, service, primitive } from "@lakitu/sdk";
304
95
 
305
- export const myKSA = defineKSA("name")
306
- .description("What this KSA enables")
307
- .category("skills") // "core" | "skills" | "deliverables"
308
- .group("subcategory") // Optional grouping
309
- .icon("mdi-icon-name") // Optional MDI icon
96
+ export const dbKSA = defineKSA("database")
97
+ .description("Database operations")
98
+ .category("skills")
99
+
100
+ .fn("migrate", fn()
101
+ .description("Run database migration")
102
+ .param("version", { type: "string", required: true })
103
+ .impl(service("services.Database.internal.migrate"))
104
+ )
310
105
 
311
- .fn("functionName", fn()
312
- .description("What this function does")
313
- .param("input", { type: "string", required: true })
314
- .param("limit", { type: "number", default: 10 })
315
- .returns<ResultType>()
316
- .impl(/* implementation */)
106
+ .fn("backup", fn()
107
+ .description("Create database backup")
108
+ .impl(primitive("shell.exec"))
317
109
  )
318
110
 
319
111
  .build();
320
112
  ```
321
113
 
322
- ### Implementation Types
114
+ ### Implementation types
323
115
 
324
- **Service** — Call cloud Convex functions:
116
+ **Service** — calls your Convex backend:
325
117
  ```typescript
326
- .impl(service("services.MyService.internal.action")
327
- .mapArgs(({ input }) => ({ data: input }))
328
- .mapResult(r => r.value)
329
- )
118
+ .impl(service("services.MyApi.internal.doThing"))
330
119
  ```
331
120
 
332
- **Primitive** — Local sandbox operations:
121
+ **Primitive** — local sandbox operation:
333
122
  ```typescript
334
123
  .impl(primitive("file.read"))
335
124
  .impl(primitive("shell.exec"))
336
125
  .impl(primitive("browser.screenshot"))
337
126
  ```
338
127
 
339
- **Composite** Chain multiple operations:
340
- ```typescript
341
- .impl(composite()
342
- .call("file.read", { path: "./config.json" }, "config")
343
- .call("myKsa.process", ctx => ({ data: ctx.vars.config }), "result")
344
- .return(ctx => ctx.vars.result)
345
- )
346
- ```
347
-
348
- ### Available Primitives
349
-
350
- | Category | Operations |
351
- |----------|------------|
352
- | **file** | `read`, `write`, `edit`, `glob`, `grep`, `ls`, `exists`, `stat` |
353
- | **shell** | `exec` |
354
- | **browser** | `open`, `screenshot`, `click`, `type`, `getHtml`, `getText`, `close` |
128
+ ### Built-in primitives
355
129
 
356
- ### Parameter Types
357
-
358
- ```typescript
359
- .param("name", { type: "string", required: true })
360
- .param("count", { type: "number", default: 10 })
361
- .param("enabled", { type: "boolean", default: false })
362
- .param("items", { type: "array" })
363
- .param("config", { type: "object" })
364
- ```
130
+ | Category | Functions |
131
+ |----------|-----------|
132
+ | `file` | `read`, `write`, `edit`, `glob`, `grep`, `ls`, `exists`, `stat` |
133
+ | `shell` | `exec` |
134
+ | `browser` | `open`, `screenshot`, `click`, `type`, `getHtml`, `getText`, `close` |
365
135
 
366
136
  ---
367
137
 
368
138
  ## Built-in KSAs
369
139
 
370
- | Category | KSA | Capabilities |
371
- |----------|-----|--------------|
372
- | **Core** | `file` | Filesystem CRUD, glob, grep |
373
- | | `shell` | Terminal command execution |
374
- | | `browser` | Playwright-based web automation |
375
- | | `beads` | Task tracking and memory management |
376
- | **Skills** | `web` | Search, scrape, content extraction |
377
- | | `news` | News monitoring and sentiment |
378
- | | `social` | Social media data extraction |
379
- | | `companies` | Company enrichment and tech stacks |
380
- | **Deliverables** | `pdf` | PDF generation from markdown |
381
- | | `email` | Email composition and sending |
140
+ | KSA | What it does |
141
+ |-----|--------------|
142
+ | `file` | Filesystem operations |
143
+ | `shell` | Terminal commands |
144
+ | `browser` | Web automation via Playwright |
145
+ | `beads` | Task tracking (`bd ready`, `bd close`, etc.) |
146
+ | `web` | Search and scrape |
147
+ | `pdf` | Generate PDFs from markdown |
148
+ | `email` | Send emails |
382
149
 
383
150
  ---
384
151
 
385
- ## The Lakitu Workflow
386
-
387
- A complete example of how the four pillars work together:
388
-
389
- ### Phase 1: Planning & Competency Loading
390
-
391
- ```bash
392
- # Developer initializes project
393
- bd init
394
- bd create "Migrate Flutter app from Provider to Riverpod" -t epic
395
- ```
396
-
397
- Agent loads relevant KSAs: `flutter-widgets`, `riverpod-state`, `testing`.
398
-
399
- ### Phase 2: Execution in Secure Sandbox
400
-
401
- ```typescript
402
- // Agent queries for unblocked work
403
- const tasks = await beads.getReady();
404
- // → [{ id: "bd-a1b2", title: "Setup Riverpod dependencies" }]
405
-
406
- // Works in isolated E2B environment
407
- await shell.exec("flutter pub add flutter_riverpod");
408
- await file.edit("pubspec.yaml", oldDeps, newDeps);
409
-
410
- // Runs tests to verify
411
- const result = await shell.exec("flutter test");
412
- if (result.exitCode !== 0) {
413
- // Self-corrects based on error output
414
- }
415
- ```
416
-
417
- ### Phase 3: Continuous Memory Management
418
-
419
- ```typescript
420
- // Agent completes task
421
- await beads.close("bd-a1b2", "Dependencies configured");
422
-
423
- // Discovers secondary issue during work
424
- await beads.create({
425
- title: "Memory leak in Widget #22",
426
- type: "bug",
427
- discoveredFrom: "bd-a1b2"
428
- });
429
-
430
- // Periodic compaction keeps context fresh
431
- await beads.compact(); // 100 lines → 5 line summary
432
- ```
433
-
434
- ### Phase 4: Session Handoff
152
+ ## CLI Commands
435
153
 
436
154
  ```bash
437
- # End of session
438
- bd sync # Sync to git
439
- git push
440
-
441
- # Next session (human or agent)
442
- bd sync # Pull latest state
443
- bd ready # Immediately oriented to project state
155
+ npx @lakitu/sdk init # Setup in Convex project
156
+ npx @lakitu/sdk init --dir ./convex # Custom directory
157
+ npx @lakitu/sdk build # Build E2B template
158
+ npx @lakitu/sdk build --base # Base template only
159
+ npx @lakitu/sdk build --custom # Custom template only
160
+ npx @lakitu/sdk publish # Template management
444
161
  ```
445
162
 
446
163
  ---
447
164
 
448
- ## Architecture Deep Dive
165
+ ## How the pieces fit together
449
166
 
450
- ```
451
- ┌─────────────────────────────────────────────────────────────────────────┐
452
- │ E2B SANDBOX │
453
- │ │
454
- │ ┌─────────────────────────────────────────────────────────────────┐ │
455
- │ │ KSA MODULES │ │
456
- │ │ /home/user/ksa/ │ │
457
- │ │ ┌──────┐ ┌──────┐ ┌───────┐ ┌─────────┐ ┌───────┐ ┌─────────┐ │ │
458
- │ │ │ file │ │ web │ │ news │ │ social │ │ email │ │companies│ │ │
459
- │ │ └──────┘ └──────┘ └───────┘ └─────────┘ └───────┘ └─────────┘ │ │
460
- │ └─────────────────────────────────────────────────────────────────┘ │
461
- │ │ │
462
- │ Local ops │ Gateway calls │
463
- │ ▼ │
464
- │ ┌─────────────────────────────────────────────────────────────────┐ │
465
- │ │ CLOUD GATEWAY │ │
466
- │ │ HTTP → Convex Services (LLMs, APIs, External Data) │ │
467
- │ └─────────────────────────────────────────────────────────────────┘ │
468
- │ │
469
- │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │
470
- │ │ /workspace/ │ │ /artifacts/ │ │ .beads/ │ │
471
- │ │ Working files │ │ PDFs, images │ │ Task graph (JSONL) │ │
472
- │ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │
473
- │ │
474
- │ ┌─────────────────────────────────────────────────────────────────┐ │
475
- │ │ LOCALIZED CONVEX │ │
476
- │ │ Real-time state • Reactive triggers • Multi-agent coordination │ │
477
- │ └─────────────────────────────────────────────────────────────────┘ │
478
- └─────────────────────────────────────────────────────────────────────────┘
479
- ```
167
+ 1. **Agent receives task** → loads relevant KSAs
168
+ 2. **Queries Beads** → `bd ready` returns unblocked work
169
+ 3. **Executes in sandbox** → writes code using KSA functions
170
+ 4. **Verifies via Convex** → checks actual state matches expected
171
+ 5. **Updates Beads** → marks tasks done, creates follow-ups
172
+ 6. **Session ends** → `bd sync` persists everything to git
173
+
174
+ The agent can pick up exactly where it left off, even across sessions or handoffs to other agents.
480
175
 
481
176
  ---
482
177
 
@@ -484,51 +179,18 @@ bd ready # Immediately oriented to project state
484
179
 
485
180
  | Variable | Description |
486
181
  |----------|-------------|
487
- | `E2B_API_KEY` | Your E2B API key (or run `e2b auth login`) |
488
-
489
- ---
490
-
491
- ## Comparison with Other Frameworks
492
-
493
- | Framework | Focus | Lakitu Synergy |
494
- |-----------|-------|----------------|
495
- | **CrewAI** | Role-based agent collaboration | Lakitu provides secure execution environment |
496
- | **LangGraph** | Deterministic state flows | Lakitu provides persistent memory across nodes |
497
- | **AutoGen** | Multi-agent conversation | Lakitu provides structured task coordination |
498
- | **Lakitu** | **Infrastructure & Memory** | Foundation layer for reliable autonomy |
499
-
500
- While orchestration frameworks manage *how* agents talk, Lakitu manages *where* they work, *what* they remember, and *how* they verify their progress.
501
-
502
- ---
503
-
504
- ## The Future: Agent Villages
505
-
506
- Lakitu is designed for the "Agent Village"—coordinated swarms working toward massive goals. In this model:
507
-
508
- - **State lives in Convex**: Agents don't need leaders; they query `bd ready`
509
- - **Memory lives in Beads**: Blockers auto-propagate across the swarm
510
- - **Execution lives in E2B**: Each agent has isolated, secure compute
511
-
512
- The human role shifts from "manager of minutiae" to "strategist of epics."
182
+ | `E2B_API_KEY` | Your E2B API key (or `e2b auth login`) |
513
183
 
514
184
  ---
515
185
 
516
186
  ## Links
517
187
 
518
- - [npm package](https://www.npmjs.com/package/@lakitu/sdk)
188
+ - [npm](https://www.npmjs.com/package/@lakitu/sdk)
519
189
  - [GitHub](https://github.com/shinyobjectz/lakitu)
520
- - [E2B Documentation](https://e2b.dev/docs)
521
- - [Convex Documentation](https://docs.convex.dev)
522
- - [Beads Issue Tracker](https://github.com/steveyegge/beads)
523
-
524
- ---
190
+ - [E2B](https://e2b.dev/docs)
191
+ - [Convex](https://docs.convex.dev)
192
+ - [Beads](https://github.com/steveyegge/beads)
525
193
 
526
194
  ## License
527
195
 
528
196
  MIT
529
-
530
- ---
531
-
532
- <p align="center">
533
- <i>The future of AI is not a better chatbot—it's a system that lands the plane every time.</i>
534
- </p>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lakitu/sdk",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Self-hosted AI agent framework for Convex + E2B with code execution",
5
5
  "type": "module",
6
6
  "main": "./dist/sdk/index.js",