luca 3.0.0 → 3.1.0

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 (388) hide show
  1. package/.github/workflows/release.yaml +1 -0
  2. package/CLAUDE.md +10 -2
  3. package/README.md +130 -112
  4. package/assistants/codingAssistant/CORE.md +6 -1
  5. package/assistants/codingAssistant/hooks.ts +1 -1
  6. package/assistants/inkbot/hooks.ts +1 -1
  7. package/assistants/inkbot/tools.ts +1 -1
  8. package/bun.lock +264 -321
  9. package/commands/audit-docs.ts +2 -2
  10. package/commands/build-bootstrap.ts +2 -3
  11. package/commands/build-python-bridge.ts +2 -3
  12. package/commands/build-scaffolds.ts +2 -3
  13. package/commands/bundle-consumer-project.ts +521 -0
  14. package/commands/generate-api-docs.ts +2 -2
  15. package/commands/inkbot.ts +2 -2
  16. package/commands/release.ts +2 -2
  17. package/commands/social.ts +137 -0
  18. package/commands/try-all-challenges.ts +3 -3
  19. package/commands/try-challenge.ts +3 -3
  20. package/datasets/lora/agentic-loop-session-candidates.jsonl +91 -0
  21. package/datasets/lora/agentic-loop-session-curation-summary.json +123 -0
  22. package/datasets/lora/luca-session-candidates.jsonl +29 -0
  23. package/datasets/lora/luca-session-curation-summary.json +121 -0
  24. package/datasets/lora/review-batch-1.jsonl +30 -0
  25. package/datasets/lora/review-manifest.json +41 -0
  26. package/datasets/lora/review-queue.jsonl +120 -0
  27. package/datasets/lora/review-schema.json +134 -0
  28. package/datasets/lora/review-template.jsonl +2 -0
  29. package/datasets/lora/review-ui.html +725 -0
  30. package/dist/agi/container.server.d.ts +2 -2
  31. package/dist/agi/features/assistant.d.ts +2 -2
  32. package/dist/agi/features/assistants-manager.d.ts +1 -1
  33. package/dist/agi/features/autonomous-assistant.d.ts +1 -1
  34. package/dist/agi/features/browser-use.d.ts +1 -1
  35. package/dist/agi/features/claude-code.d.ts +1 -1
  36. package/dist/agi/features/conversation-history.d.ts +2 -2
  37. package/dist/agi/features/conversation.d.ts +1 -1
  38. package/dist/agi/features/docs-reader.d.ts +1 -1
  39. package/dist/agi/features/file-tools.d.ts +1 -1
  40. package/dist/agi/features/luca-coder.d.ts +1 -1
  41. package/dist/agi/features/openai-codex.d.ts +1 -1
  42. package/dist/agi/features/skills-library.d.ts +1 -1
  43. package/dist/clients/civitai/index.d.ts +4 -4
  44. package/dist/clients/client-template.d.ts +4 -4
  45. package/dist/clients/comfyui/index.d.ts +2 -2
  46. package/dist/clients/elevenlabs/index.d.ts +2 -2
  47. package/dist/clients/openai/index.d.ts +2 -2
  48. package/dist/clients/supabase/index.d.ts +3 -3
  49. package/dist/command.d.ts +1 -1
  50. package/dist/node/container.d.ts +1 -1
  51. package/dist/node/features/helpers.d.ts +3 -3
  52. package/dist/node/features/semantic-search.d.ts +1 -1
  53. package/dist/node/features/vm.d.ts +3 -3
  54. package/dist/node.d.ts +1 -1
  55. package/dist/scaffolds/generated.d.ts +1 -1
  56. package/dist/selector.d.ts +1 -1
  57. package/features/cipher-social.ts +493 -0
  58. package/index.html +217 -190
  59. package/luca.console.ts +1 -1
  60. package/package.json +7 -2
  61. package/public/index.html +217 -190
  62. package/public/slides-ai-native.html +1 -1
  63. package/public/slides-intro.html +2 -2
  64. package/scripts/curate-claude-sessions.ts +561 -0
  65. package/scripts/examples/ask-luca-expert.ts +1 -1
  66. package/scripts/examples/assistant-questions.ts +1 -1
  67. package/scripts/examples/excalidraw-expert.ts +1 -1
  68. package/scripts/examples/file-manager.ts +1 -1
  69. package/scripts/examples/ideas.ts +1 -1
  70. package/scripts/examples/interactive-chat.ts +1 -1
  71. package/scripts/examples/opening-a-web-browser.ts +1 -1
  72. package/scripts/examples/telegram-bot.ts +1 -1
  73. package/scripts/examples/using-assistant-with-mcp.ts +1 -1
  74. package/scripts/examples/using-claude-code.ts +1 -1
  75. package/scripts/examples/using-contentdb.ts +2 -2
  76. package/scripts/examples/using-conversations.ts +1 -1
  77. package/scripts/examples/using-disk-cache.ts +1 -1
  78. package/scripts/examples/using-docker-shell.ts +1 -1
  79. package/scripts/examples/using-elevenlabs.ts +1 -1
  80. package/scripts/examples/using-google-calendar.ts +1 -1
  81. package/scripts/examples/using-google-docs.ts +1 -1
  82. package/scripts/examples/using-google-drive.ts +1 -1
  83. package/scripts/examples/using-google-sheets.ts +1 -1
  84. package/scripts/examples/using-nlp.ts +1 -1
  85. package/scripts/examples/using-ollama.ts +1 -1
  86. package/scripts/examples/using-postgres.ts +1 -1
  87. package/scripts/examples/using-runpod.ts +1 -1
  88. package/scripts/examples/using-tts.ts +1 -1
  89. package/scripts/scaffold.ts +5 -5
  90. package/scripts/scratch.ts +1 -1
  91. package/scripts/test-assistant-hooks.ts +1 -1
  92. package/scripts/test-docs-reader.ts +1 -1
  93. package/src/agi/container.server.ts +6 -2
  94. package/src/agi/features/agent-memory.ts +25 -25
  95. package/src/agi/features/assistant.ts +34 -5
  96. package/src/agi/features/assistants-manager.ts +122 -6
  97. package/src/agi/features/autonomous-assistant.ts +1 -1
  98. package/src/agi/features/browser-use.ts +20 -1
  99. package/src/agi/features/claude-code.ts +51 -5
  100. package/src/agi/features/coding-tools.ts +1 -1
  101. package/src/agi/features/conversation-history.ts +181 -4
  102. package/src/agi/features/conversation.ts +186 -15
  103. package/src/agi/features/docs-reader.ts +2 -2
  104. package/src/agi/features/file-tools.ts +49 -2
  105. package/src/agi/features/luca-coder.ts +7 -5
  106. package/src/agi/features/mcp-bridge.ts +532 -0
  107. package/src/agi/features/openai-codex.ts +2 -2
  108. package/src/agi/features/skills-library.ts +131 -52
  109. package/src/agi/lib/token-counter.ts +80 -0
  110. package/src/bootstrap/generated.ts +56 -57
  111. package/src/browser.ts +1 -1
  112. package/src/cli/build-info.ts +2 -2
  113. package/src/cli/cli.ts +2 -2
  114. package/src/clients/civitai/index.ts +5 -5
  115. package/src/clients/client-template.ts +4 -4
  116. package/src/clients/comfyui/index.ts +4 -4
  117. package/src/clients/elevenlabs/index.ts +4 -4
  118. package/src/clients/openai/index.ts +7 -7
  119. package/src/clients/supabase/index.ts +4 -4
  120. package/src/clients/voicebox/index.ts +4 -4
  121. package/src/command.ts +2 -1
  122. package/src/commands/chat.ts +1 -0
  123. package/src/commands/eval.ts +2 -56
  124. package/src/commands/introspect.ts +1 -1
  125. package/src/commands/prompt.ts +41 -9
  126. package/src/container-describer.ts +8 -1
  127. package/src/container.ts +13 -0
  128. package/src/entity.ts +2 -2
  129. package/src/helper.ts +1 -1
  130. package/src/introspection/generated.agi.ts +29596 -27654
  131. package/src/introspection/generated.node.ts +20284 -19247
  132. package/src/introspection/generated.web.ts +605 -584
  133. package/src/introspection/scan.ts +11 -6
  134. package/src/node/container.ts +9 -1
  135. package/src/node/features/content-db.ts +39 -2
  136. package/src/node/features/display-result.ts +57 -0
  137. package/src/node/features/helpers.ts +46 -7
  138. package/src/node/features/python.ts +25 -19
  139. package/src/node/features/repl.ts +1 -1
  140. package/src/node/features/secure-shell.ts +11 -17
  141. package/src/node/features/semantic-search.ts +2 -2
  142. package/src/node/features/socket-repl.ts +336 -0
  143. package/src/node/features/telnyx-assistant-connector.ts +1206 -0
  144. package/src/node/features/transpiler.ts +2 -3
  145. package/src/node/features/ui.ts +5 -0
  146. package/src/node/features/vm.ts +20 -3
  147. package/src/node.ts +3 -3
  148. package/src/python/generated.ts +0 -1
  149. package/src/scaffolds/generated.ts +82 -83
  150. package/src/selector.ts +1 -1
  151. package/src/servers/express.ts +1 -1
  152. package/src/web/features/helpers.ts +22 -0
  153. package/tsconfig.json +12 -12
  154. package/docs/CLI.md +0 -335
  155. package/docs/CNAME +0 -1
  156. package/docs/README.md +0 -60
  157. package/docs/TABLE-OF-CONTENTS.md +0 -183
  158. package/docs/apis/clients/elevenlabs.md +0 -308
  159. package/docs/apis/clients/graph.md +0 -107
  160. package/docs/apis/clients/openai.md +0 -429
  161. package/docs/apis/clients/rest.md +0 -161
  162. package/docs/apis/clients/websocket.md +0 -174
  163. package/docs/apis/features/agi/assistant.md +0 -625
  164. package/docs/apis/features/agi/assistants-manager.md +0 -282
  165. package/docs/apis/features/agi/auto-assistant.md +0 -279
  166. package/docs/apis/features/agi/browser-use.md +0 -802
  167. package/docs/apis/features/agi/claude-code.md +0 -884
  168. package/docs/apis/features/agi/conversation-history.md +0 -364
  169. package/docs/apis/features/agi/conversation.md +0 -548
  170. package/docs/apis/features/agi/docs-reader.md +0 -99
  171. package/docs/apis/features/agi/file-tools.md +0 -163
  172. package/docs/apis/features/agi/luca-coder.md +0 -407
  173. package/docs/apis/features/agi/openai-codex.md +0 -396
  174. package/docs/apis/features/agi/openapi.md +0 -138
  175. package/docs/apis/features/agi/semantic-search.md +0 -387
  176. package/docs/apis/features/agi/skills-library.md +0 -239
  177. package/docs/apis/features/node/container-link.md +0 -192
  178. package/docs/apis/features/node/content-db.md +0 -450
  179. package/docs/apis/features/node/disk-cache.md +0 -379
  180. package/docs/apis/features/node/dns.md +0 -652
  181. package/docs/apis/features/node/docker.md +0 -706
  182. package/docs/apis/features/node/downloader.md +0 -81
  183. package/docs/apis/features/node/esbuild.md +0 -60
  184. package/docs/apis/features/node/file-manager.md +0 -191
  185. package/docs/apis/features/node/fs.md +0 -1217
  186. package/docs/apis/features/node/git.md +0 -371
  187. package/docs/apis/features/node/google-auth.md +0 -193
  188. package/docs/apis/features/node/google-calendar.md +0 -202
  189. package/docs/apis/features/node/google-docs.md +0 -173
  190. package/docs/apis/features/node/google-drive.md +0 -246
  191. package/docs/apis/features/node/google-mail.md +0 -214
  192. package/docs/apis/features/node/google-sheets.md +0 -194
  193. package/docs/apis/features/node/grep.md +0 -292
  194. package/docs/apis/features/node/helpers.md +0 -164
  195. package/docs/apis/features/node/ink.md +0 -334
  196. package/docs/apis/features/node/ipc-socket.md +0 -249
  197. package/docs/apis/features/node/json-tree.md +0 -86
  198. package/docs/apis/features/node/networking.md +0 -316
  199. package/docs/apis/features/node/nlp.md +0 -133
  200. package/docs/apis/features/node/opener.md +0 -97
  201. package/docs/apis/features/node/os.md +0 -146
  202. package/docs/apis/features/node/package-finder.md +0 -392
  203. package/docs/apis/features/node/postgres.md +0 -234
  204. package/docs/apis/features/node/proc.md +0 -399
  205. package/docs/apis/features/node/process-manager.md +0 -305
  206. package/docs/apis/features/node/python.md +0 -604
  207. package/docs/apis/features/node/redis.md +0 -380
  208. package/docs/apis/features/node/repl.md +0 -88
  209. package/docs/apis/features/node/runpod.md +0 -674
  210. package/docs/apis/features/node/secure-shell.md +0 -176
  211. package/docs/apis/features/node/semantic-search.md +0 -408
  212. package/docs/apis/features/node/sqlite.md +0 -233
  213. package/docs/apis/features/node/telegram.md +0 -279
  214. package/docs/apis/features/node/transpiler.md +0 -74
  215. package/docs/apis/features/node/tts.md +0 -133
  216. package/docs/apis/features/node/ui.md +0 -701
  217. package/docs/apis/features/node/vault.md +0 -59
  218. package/docs/apis/features/node/vm.md +0 -75
  219. package/docs/apis/features/node/yaml-tree.md +0 -85
  220. package/docs/apis/features/node/yaml.md +0 -176
  221. package/docs/apis/features/web/asset-loader.md +0 -59
  222. package/docs/apis/features/web/container-link.md +0 -192
  223. package/docs/apis/features/web/esbuild.md +0 -54
  224. package/docs/apis/features/web/helpers.md +0 -164
  225. package/docs/apis/features/web/network.md +0 -44
  226. package/docs/apis/features/web/speech.md +0 -69
  227. package/docs/apis/features/web/vault.md +0 -59
  228. package/docs/apis/features/web/vm.md +0 -75
  229. package/docs/apis/features/web/voice.md +0 -84
  230. package/docs/apis/servers/express.md +0 -171
  231. package/docs/apis/servers/mcp.md +0 -238
  232. package/docs/apis/servers/websocket.md +0 -170
  233. package/docs/bootstrap/CLAUDE.md +0 -101
  234. package/docs/bootstrap/SKILL.md +0 -341
  235. package/docs/bootstrap/templates/about-command.ts +0 -41
  236. package/docs/bootstrap/templates/docs-models.ts +0 -22
  237. package/docs/bootstrap/templates/docs-readme.md +0 -43
  238. package/docs/bootstrap/templates/example-feature.ts +0 -53
  239. package/docs/bootstrap/templates/health-endpoint.ts +0 -15
  240. package/docs/bootstrap/templates/luca-cli.ts +0 -30
  241. package/docs/bootstrap/templates/runme.md +0 -54
  242. package/docs/challenges/caching-proxy.md +0 -16
  243. package/docs/challenges/content-db-round-trip.md +0 -14
  244. package/docs/challenges/custom-command.md +0 -9
  245. package/docs/challenges/file-watcher-pipeline.md +0 -11
  246. package/docs/challenges/grep-audit-report.md +0 -15
  247. package/docs/challenges/multi-feature-dashboard.md +0 -14
  248. package/docs/challenges/process-orchestrator.md +0 -17
  249. package/docs/challenges/rest-api-server-with-client.md +0 -12
  250. package/docs/challenges/script-runner-with-vm.md +0 -11
  251. package/docs/challenges/simple-rest-api.md +0 -15
  252. package/docs/challenges/websocket-serve-and-client.md +0 -11
  253. package/docs/challenges/yaml-config-system.md +0 -14
  254. package/docs/command-system-overhaul.md +0 -94
  255. package/docs/documentation-audit.md +0 -134
  256. package/docs/examples/assistant/CORE.md +0 -18
  257. package/docs/examples/assistant/hooks.ts +0 -3
  258. package/docs/examples/assistant/tools.ts +0 -10
  259. package/docs/examples/assistant-hooks-reference.ts +0 -171
  260. package/docs/examples/assistant-with-process-manager.md +0 -84
  261. package/docs/examples/content-db.md +0 -77
  262. package/docs/examples/disk-cache.md +0 -83
  263. package/docs/examples/docker.md +0 -101
  264. package/docs/examples/downloader.md +0 -70
  265. package/docs/examples/entity.md +0 -124
  266. package/docs/examples/esbuild.md +0 -80
  267. package/docs/examples/feature-as-tool-provider.md +0 -143
  268. package/docs/examples/file-manager.md +0 -82
  269. package/docs/examples/fs.md +0 -83
  270. package/docs/examples/git.md +0 -85
  271. package/docs/examples/google-auth.md +0 -88
  272. package/docs/examples/google-calendar.md +0 -94
  273. package/docs/examples/google-docs.md +0 -82
  274. package/docs/examples/google-drive.md +0 -96
  275. package/docs/examples/google-sheets.md +0 -95
  276. package/docs/examples/grep.md +0 -85
  277. package/docs/examples/ink-blocks.md +0 -75
  278. package/docs/examples/ink-renderer.md +0 -41
  279. package/docs/examples/ink.md +0 -103
  280. package/docs/examples/ipc-socket.md +0 -103
  281. package/docs/examples/json-tree.md +0 -91
  282. package/docs/examples/networking.md +0 -58
  283. package/docs/examples/nlp.md +0 -91
  284. package/docs/examples/opener.md +0 -78
  285. package/docs/examples/os.md +0 -72
  286. package/docs/examples/package-finder.md +0 -89
  287. package/docs/examples/postgres.md +0 -91
  288. package/docs/examples/proc.md +0 -81
  289. package/docs/examples/process-manager.md +0 -79
  290. package/docs/examples/python.md +0 -132
  291. package/docs/examples/repl.md +0 -93
  292. package/docs/examples/runpod.md +0 -119
  293. package/docs/examples/secure-shell.md +0 -92
  294. package/docs/examples/sqlite.md +0 -86
  295. package/docs/examples/structured-output-with-assistants.md +0 -144
  296. package/docs/examples/telegram.md +0 -77
  297. package/docs/examples/tts.md +0 -86
  298. package/docs/examples/ui.md +0 -80
  299. package/docs/examples/vault.md +0 -70
  300. package/docs/examples/vm.md +0 -86
  301. package/docs/examples/websocket-ask-and-reply-example.md +0 -128
  302. package/docs/examples/yaml-tree.md +0 -93
  303. package/docs/examples/yaml.md +0 -104
  304. package/docs/ideas/assistant-factory-pattern.md +0 -142
  305. package/docs/in-memory-fs.md +0 -4
  306. package/docs/introspection-audit.md +0 -49
  307. package/docs/introspection.md +0 -164
  308. package/docs/mcp/readme.md +0 -162
  309. package/docs/models.ts +0 -41
  310. package/docs/philosophy.md +0 -86
  311. package/docs/principles.md +0 -7
  312. package/docs/prompts/audit-codebase-for-failures-to-use-the-container.md +0 -34
  313. package/docs/prompts/check-for-undocumented-features.md +0 -27
  314. package/docs/prompts/mcp-test-easy-command.md +0 -27
  315. package/docs/scaffolds/client.md +0 -149
  316. package/docs/scaffolds/command.md +0 -120
  317. package/docs/scaffolds/endpoint.md +0 -171
  318. package/docs/scaffolds/feature.md +0 -158
  319. package/docs/scaffolds/selector.md +0 -91
  320. package/docs/scaffolds/server.md +0 -196
  321. package/docs/selectors.md +0 -115
  322. package/docs/sessions/custom-command/attempt-log-2.md +0 -195
  323. package/docs/sessions/file-watcher-pipeline/attempt-log-1.md +0 -728
  324. package/docs/sessions/file-watcher-pipeline/attempt-log-2.md +0 -555
  325. package/docs/sessions/grep-audit-report/attempt-log-1.md +0 -289
  326. package/docs/sessions/multi-feature-dashboard/attempt-log-2.md +0 -679
  327. package/docs/sessions/rest-api-server-with-client/attempt-log-1.md +0 -1
  328. package/docs/sessions/rest-api-server-with-client/attempt-log-3.md +0 -920
  329. package/docs/sessions/simple-rest-api/attempt-log-1.md +0 -593
  330. package/docs/sessions/websocket-serve-and-client/attempt-log-2.md +0 -995
  331. package/docs/tutorials/00-bootstrap.md +0 -166
  332. package/docs/tutorials/01-getting-started.md +0 -106
  333. package/docs/tutorials/02-container.md +0 -210
  334. package/docs/tutorials/03-scripts.md +0 -194
  335. package/docs/tutorials/04-features-overview.md +0 -196
  336. package/docs/tutorials/05-state-and-events.md +0 -171
  337. package/docs/tutorials/06-servers.md +0 -157
  338. package/docs/tutorials/07-endpoints.md +0 -198
  339. package/docs/tutorials/08-commands.md +0 -252
  340. package/docs/tutorials/09-clients.md +0 -162
  341. package/docs/tutorials/10-creating-features.md +0 -203
  342. package/docs/tutorials/11-contentbase.md +0 -191
  343. package/docs/tutorials/12-assistants.md +0 -215
  344. package/docs/tutorials/13-introspection.md +0 -157
  345. package/docs/tutorials/14-type-system.md +0 -174
  346. package/docs/tutorials/15-project-patterns.md +0 -222
  347. package/docs/tutorials/16-google-features.md +0 -534
  348. package/docs/tutorials/17-tui-blocks.md +0 -530
  349. package/docs/tutorials/18-semantic-search.md +0 -334
  350. package/docs/tutorials/19-python-sessions.md +0 -401
  351. package/docs/tutorials/20-browser-esm.md +0 -234
  352. package/index.ts +0 -1
  353. package/src/agi/endpoints/ask.ts +0 -60
  354. package/src/agi/endpoints/conversations/[id].ts +0 -45
  355. package/src/agi/endpoints/conversations.ts +0 -31
  356. package/src/agi/endpoints/experts.ts +0 -37
  357. package/test/assistant-hooks.test.ts +0 -306
  358. package/test/assistant.test.ts +0 -81
  359. package/test/bus.test.ts +0 -134
  360. package/test/clients-servers.test.ts +0 -217
  361. package/test/command.test.ts +0 -267
  362. package/test/container-link.test.ts +0 -274
  363. package/test/conversation.test.ts +0 -220
  364. package/test/features.test.ts +0 -160
  365. package/test/fork-and-research.test.ts +0 -450
  366. package/test/integration.test.ts +0 -787
  367. package/test/interceptor-chain.test.ts +0 -61
  368. package/test/node-container.test.ts +0 -121
  369. package/test/python-session.test.ts +0 -105
  370. package/test/rate-limit.test.ts +0 -272
  371. package/test/semantic-search.test.ts +0 -550
  372. package/test/state.test.ts +0 -121
  373. package/test/vm-context.test.ts +0 -146
  374. package/test/vm-loadmodule.test.ts +0 -213
  375. package/test/websocket-ask.test.ts +0 -101
  376. package/test-integration/assistant.test.ts +0 -138
  377. package/test-integration/assistants-manager.test.ts +0 -113
  378. package/test-integration/claude-code.test.ts +0 -98
  379. package/test-integration/conversation-history.test.ts +0 -205
  380. package/test-integration/conversation.test.ts +0 -137
  381. package/test-integration/elevenlabs.test.ts +0 -55
  382. package/test-integration/google-services.test.ts +0 -80
  383. package/test-integration/helpers.ts +0 -89
  384. package/test-integration/memory.test.ts +0 -204
  385. package/test-integration/openai-codex.test.ts +0 -93
  386. package/test-integration/runpod.test.ts +0 -58
  387. package/test-integration/server-endpoints.test.ts +0 -97
  388. package/test-integration/telegram.test.ts +0 -46
package/public/index.html CHANGED
@@ -3,7 +3,8 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Luca — One Container, Everything You Need</title>
6
+ <title>Luca — Agent-Native TypeScript Runtime</title>
7
+ <meta name="description" content="An agent-native TypeScript runtime that ships as a single binary — and builds yours too. One self-documenting container for humans and AI agents.">
7
8
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
10
  <link href="https://fonts.googleapis.com/css2?family=Sora:wght@300;400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet">
@@ -297,7 +298,7 @@
297
298
  .hero-sub {
298
299
  font-size: clamp(16px, 2vw, 20px);
299
300
  color: var(--text-dim);
300
- max-width: 600px;
301
+ max-width: 640px;
301
302
  margin: 0 auto 48px;
302
303
  font-weight: 400;
303
304
  line-height: 1.6;
@@ -624,6 +625,7 @@
624
625
  .at-client .arch-type { color: var(--purple-bright); }
625
626
  .at-server .arch-type { color: var(--amber-bright); }
626
627
  .at-cmd .arch-type { color: var(--green); }
628
+ .at-agent .arch-type { color: var(--rose); }
627
629
 
628
630
  .arch-section-title {
629
631
  font-family: var(--font-mono);
@@ -942,6 +944,7 @@
942
944
  .hero { padding-top: 120px; }
943
945
  .cta-box { padding: 40px 24px; }
944
946
  .arch-visual { padding: 32px 20px; }
947
+ .install-cmd { font-size: 11px; padding: 12px 16px; }
945
948
  }
946
949
  </style>
947
950
  </head>
@@ -955,11 +958,11 @@
955
958
  luca
956
959
  </div>
957
960
  <ul class="nav-links" id="nav">
958
- <li><a href="#features">Features</a></li>
961
+ <li><a href="#why">Why Luca</a></li>
959
962
  <li><a href="#architecture">Architecture</a></li>
960
963
  <li><a href="#code">Code</a></li>
961
964
  <li><a href="#cli">CLI</a></li>
962
- <li><a href="#get-started" class="nav-cta">Get Started</a></li>
965
+ <li><a href="#get-started" class="nav-cta">Install</a></li>
963
966
  </ul>
964
967
  </div>
965
968
  </nav>
@@ -969,19 +972,19 @@
969
972
  <div class="wrap">
970
973
  <div class="hero-badge anim" style="--i:0">
971
974
  <span class="dot"></span>
972
- Built on Bun
975
+ Single Binary &middot; Agent-Native
973
976
  </div>
974
977
  <h1 class="anim" style="--i:1">
975
- One Container.<br>
976
- <span class="gradient-text">Everything You Need.</span>
978
+ Lightweight Universal<br>
979
+ <span class="gradient-text">Conversational Architecture</span>
977
980
  </h1>
978
981
  <p class="hero-sub anim" style="--i:2">
979
- Luca is a runtime container framework that gives your server and browser applications
980
- every dependency they need &mdash; zero external packages required.
982
+ A universal TypeScript framework you can talk to.
983
+ Orchestrate a fleet of self-improving agents across servers, browsers, and GPU instances through one observable bus.
981
984
  </p>
982
985
  <div class="hero-actions anim" style="--i:3">
983
- <a href="#get-started" class="btn btn-primary">Get Started</a>
984
- <a href="#features" class="btn btn-secondary">Explore Features</a>
986
+ <a href="#get-started" class="btn btn-primary">Install Luca</a>
987
+ <a href="#why" class="btn btn-secondary">See Why</a>
985
988
  </div>
986
989
 
987
990
  <div class="terminal anim" style="--i:4">
@@ -989,19 +992,23 @@
989
992
  <div class="terminal-dot"></div>
990
993
  <div class="terminal-dot"></div>
991
994
  <div class="terminal-dot"></div>
992
- <div class="terminal-title">luca &mdash; interactive</div>
995
+ <div class="terminal-title">luca &mdash; agent-native</div>
993
996
  </div>
994
997
  <div class="terminal-body">
995
- <div class="line"><span class="t-comment">// everything is on the container</span></div>
996
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">container</span> = <span class="t-kw">await</span> <span class="t-fn">createContainer</span><span class="t-bracket">()</span></div>
998
+ <div class="line"><span class="t-comment">// memory lives in a queryable db backed by markdown</span></div>
999
+ <div class="line"><span class="t-comment">// <a href="https://contentbase.soederpop.com" target="_blank" rel="noopener" style="color:var(--cyan-bright);text-decoration:underline;font-style:normal">contentbase.soederpop.com</a></span></div>
1000
+ <div class="line"><span class="t-kw">const</span> <span class="t-cmd">docs</span> = container.<span class="t-method">feature</span><span class="t-bracket">(</span><span class="t-str">'contentDb'</span>, { <span class="t-key">rootPath</span>: <span class="t-str">'docs'</span> }<span class="t-bracket">)</span></div>
1001
+ <div class="line">&nbsp;</div>
1002
+ <div class="line"><span class="t-comment">// the central bus for your agent fleet</span></div>
1003
+ <div class="line"><span class="t-kw">const</span> <span class="t-cmd">mgr</span> = container.<span class="t-method">feature</span><span class="t-bracket">(</span><span class="t-str">'assistantManager'</span><span class="t-bracket">)</span></div>
1004
+ <div class="line">mgr.<span class="t-method">add</span><span class="t-bracket">(</span><span class="t-str">'researcher'</span>, { <span class="t-key">use</span>: [<span class="t-str">'browserUse'</span>, docs] }<span class="t-bracket">)</span></div>
1005
+ <div class="line">mgr.<span class="t-method">add</span><span class="t-bracket">(</span><span class="t-str">'coder'</span>, { <span class="t-key">use</span>: [<span class="t-str">'git'</span>, <span class="t-str">'proc'</span>, <span class="t-str">'fs'</span>, docs] }<span class="t-bracket">)</span></div>
997
1006
  <div class="line">&nbsp;</div>
998
- <div class="line"><span class="t-comment">// features, clients, servers &mdash; all built in</span></div>
999
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">fs</span> = container.<span class="t-method">feature</span><span class="t-bracket">(</span><span class="t-str">'fs'</span><span class="t-bracket">)</span></div>
1000
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">api</span> = container.<span class="t-method">client</span><span class="t-bracket">(</span><span class="t-str">'rest'</span><span class="t-bracket">)</span></div>
1001
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">app</span> = container.<span class="t-method">server</span><span class="t-bracket">(</span><span class="t-str">'express'</span><span class="t-bracket">)</span></div>
1007
+ <div class="line"><span class="t-comment">// query tasks, assign to the right agent</span></div>
1008
+ <div class="line"><span class="t-kw">const</span> <span class="t-cmd">tasks</span> = <span class="t-kw">await</span> docs.<span class="t-method">query</span>(docs.models.<span class="t-key">Task</span>).<span class="t-method">where</span>(<span class="t-str">'status'</span>, <span class="t-str">'todo'</span>)</div>
1009
+ <div class="line">tasks.<span class="t-method">forEach</span>(<span class="t-cmd">task</span> <span class="t-kw">=></span> mgr.<span class="t-method">assign</span>(<span class="t-str">'coder'</span>, task))</div>
1002
1010
  <div class="line">&nbsp;</div>
1003
- <div class="line"><span class="t-comment">// that's it. start building.</span></div>
1004
- <div class="line"><span class="t-kw">await</span> app.<span class="t-method">start</span><span class="t-bracket">()</span></div>
1011
+ <div class="line"><span class="t-kw">await</span> mgr.<span class="t-method">startAll</span><span class="t-bracket">()</span> <span class="t-comment">// a swarm, not a chatbot</span></div>
1005
1012
  </div>
1006
1013
  </div>
1007
1014
  </div>
@@ -1012,55 +1019,85 @@
1012
1019
  <div class="stats-row">
1013
1020
  <div class="stat anim-scale" style="--i:0">
1014
1021
  <div class="stat-value"><span class="accent">0</span></div>
1015
- <div class="stat-label">External Dependencies</div>
1022
+ <div class="stat-label">npm install required</div>
1016
1023
  </div>
1017
1024
  <div class="stat anim-scale" style="--i:1">
1018
- <div class="stat-value">20<span class="accent">+</span></div>
1019
- <div class="stat-label">Built-in Helpers</div>
1025
+ <div class="stat-value">1</div>
1026
+ <div class="stat-label">Binary &mdash; In and Out</div>
1020
1027
  </div>
1021
1028
  <div class="stat anim-scale" style="--i:2">
1022
- <div class="stat-value">2</div>
1023
- <div class="stat-label">Runtimes (Node + Browser)</div>
1029
+ <div class="stat-value">20<span class="accent">+</span></div>
1030
+ <div class="stat-label">Built-in Helpers</div>
1024
1031
  </div>
1025
1032
  <div class="stat anim-scale" style="--i:3">
1026
- <div class="stat-value">1</div>
1027
- <div class="stat-label">Container for Everything</div>
1033
+ <div class="stat-value"><span class="accent">&infin;</span></div>
1034
+ <div class="stat-label">Agent Toolkits via use()</div>
1028
1035
  </div>
1029
1036
  </div>
1030
1037
  </div>
1031
1038
 
1039
+ <!-- ===== WHY LUCA / PHILOSOPHY ===== -->
1040
+ <section id="why">
1041
+ <div class="wrap">
1042
+ <div class="sec-label anim" style="--i:0">Why Luca</div>
1043
+ <h2 class="sec-title anim" style="--i:1">Three Ideas That<br>Change Everything</h2>
1044
+ <p class="sec-desc anim" style="--i:2">
1045
+ AI agents today either generate ad-hoc code or fight frameworks that weren't designed for them.
1046
+ Luca assistants build applications using the same components they are made from. They don't just write the code &mdash; they live in its runtime.
1047
+ </p>
1048
+
1049
+ <div class="philosophy">
1050
+ <div class="phil-card anim" style="--i:3; --phil-accent: var(--cyan);">
1051
+ <div class="phil-num">01</div>
1052
+ <h3>One Introspectable Container</h3>
1053
+ <p>Every Luca app has a single container &mdash; features, clients, servers, commands, state, events. Every component describes itself. The human reads the same docs the agent reads. There is one way to do things.</p>
1054
+ </div>
1055
+ <div class="phil-card anim" style="--i:4; --phil-accent: var(--purple);">
1056
+ <div class="phil-num">02</div>
1057
+ <h3>Single Binary In, Single Binary Out</h3>
1058
+ <p>Luca ships as a standalone binary. No runtime dependencies, no package manager. Use it to build your project, then compile your project into its own binary with your commands, features, and assistants baked in.</p>
1059
+ </div>
1060
+ <div class="phil-card anim" style="--i:5; --phil-accent: var(--amber);">
1061
+ <div class="phil-num">03</div>
1062
+ <h3>Assistants That Swarm</h3>
1063
+ <p>Each assistant can <code style="font-size:12px; background:var(--cyan-dim); color:var(--cyan-bright); padding:1px 5px; border-radius:3px; font-family:var(--font-mono);">use()</code> any module and inherit its tools. The <code style="font-size:12px; background:var(--cyan-dim); color:var(--cyan-bright); padding:1px 5px; border-radius:3px; font-family:var(--font-mono);">assistantManager</code> orchestrates many &mdash; across servers, browsers, and GPU instances &mdash; through one observable bus.</p>
1064
+ </div>
1065
+ </div>
1066
+ </div>
1067
+ </section>
1068
+
1032
1069
  <!-- ===== FEATURES ===== -->
1033
1070
  <section id="features">
1034
1071
  <div class="wrap">
1035
- <div class="sec-label anim" style="--i:0">Features</div>
1036
- <h2 class="sec-title anim" style="--i:1">Batteries Included.<br>All of Them.</h2>
1072
+ <div class="sec-label anim" style="--i:0">Capabilities</div>
1073
+ <h2 class="sec-title anim" style="--i:1">Everything an Agent<br>Needs to Operate</h2>
1037
1074
  <p class="sec-desc anim" style="--i:2">
1038
- Every feature is a first-class citizen of the container &mdash; observable state, event-driven, introspectable. No glue code, no boilerplate.
1075
+ No imports beyond the container. File I/O, HTTP, databases, git, browser automation, terminal UI, encryption &mdash; all typed, all discoverable at runtime.
1039
1076
  </p>
1040
1077
 
1041
1078
  <div class="features-grid">
1042
- <div class="feature-card fc-cyan anim" style="--i:3">
1043
- <div class="feature-icon">
1044
- <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M4 6h14M4 11h14M4 16h8"/></svg>
1079
+ <div class="feature-card fc-rose anim" style="--i:3">
1080
+ <div class="feature-icon" style="--icon-bg: var(--rose-dim); --icon-color: var(--rose);">
1081
+ <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M12 3c4.97 0 9 3.58 9 8s-4.03 8-9 8c-1.5 0-2.91-.35-4.13-.97L3 19l1.39-4.17C3.5 13.67 3 12.38 3 11c0-4.42 4.03-8 9-8z"/></svg>
1045
1082
  </div>
1046
- <h3>File System</h3>
1047
- <p>Read, write, watch, and scan your project files. Intelligent file management with <code>fileManager</code> for full project awareness.</p>
1083
+ <h3>Assistant Manager</h3>
1084
+ <p>The <code>assistantManager</code> is a central observable bus for your agent fleet. Spin up specialized assistants, route messages between them, watch their state &mdash; one coordinator for the whole swarm.</p>
1048
1085
  </div>
1049
1086
 
1050
1087
  <div class="feature-card fc-purple anim" style="--i:4">
1051
1088
  <div class="feature-icon" style="--icon-bg: var(--purple-dim); --icon-color: var(--purple-bright);">
1052
- <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><rect x="3" y="3" width="16" height="16" rx="3"/><path d="M7 8h8M7 11h5M7 14h6"/></svg>
1089
+ <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><rect x="2" y="6" width="18" height="12" rx="2"/><path d="M6 10l4 3-4 3"/><path d="M12 16h4"/></svg>
1053
1090
  </div>
1054
- <h3>Process &amp; VM</h3>
1055
- <p>Execute shell commands with <code>proc.exec()</code>. Run isolated code in the VM with full module loading and sandboxing.</p>
1091
+ <h3>Binary Compiler</h3>
1092
+ <p>Compile your project into a standalone executable. No node, no bun, no npm on the target machine. Your users download one file and run it.</p>
1056
1093
  </div>
1057
1094
 
1058
- <div class="feature-card fc-amber anim" style="--i:5">
1059
- <div class="feature-icon" style="--icon-bg: var(--amber-dim); --icon-color: var(--amber-bright);">
1060
- <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><circle cx="11" cy="11" r="3"/><path d="M11 3v2M11 17v2M3 11h2M17 11h2M5.6 5.6l1.4 1.4M15 15l1.4 1.4M5.6 16.4l1.4-1.4M15 7l1.4-1.4"/></svg>
1095
+ <div class="feature-card fc-cyan anim" style="--i:5">
1096
+ <div class="feature-icon">
1097
+ <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M4 6h14M4 11h14M4 16h8"/></svg>
1061
1098
  </div>
1062
- <h3>Networking</h3>
1063
- <p>Built-in HTTP fetch, port management, and network utilities. Check availability, find open ports, make requests.</p>
1099
+ <h3>File System &amp; Grep</h3>
1100
+ <p>Read, write, watch, and search your project. <code>fs</code>, <code>fileManager</code>, and <code>grep</code> give your agent full project awareness.</p>
1064
1101
  </div>
1065
1102
 
1066
1103
  <div class="feature-card fc-green anim" style="--i:6">
@@ -1068,76 +1105,47 @@
1068
1105
  <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M6 3v18M6 8h9a3 3 0 010 6H6"/></svg>
1069
1106
  </div>
1070
1107
  <h3>Git Integration</h3>
1071
- <p>Full git awareness &mdash; branch info, status, diff, log. Your container knows your repo as well as you do.</p>
1108
+ <p>Branch info, status, diff, log. The container knows your repo. The agent knows your repo.</p>
1072
1109
  </div>
1073
1110
 
1074
- <div class="feature-card fc-rose anim" style="--i:7">
1075
- <div class="feature-icon" style="--icon-bg: var(--rose-dim); --icon-color: var(--rose);">
1076
- <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M10 4L3 11l7 7M14 4l7 7-7 7"/></svg>
1111
+ <div class="feature-card fc-amber anim" style="--i:7">
1112
+ <div class="feature-icon" style="--icon-bg: var(--amber-dim); --icon-color: var(--amber-bright);">
1113
+ <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M3 7l9-4 9 4-9 4-9-4zM3 12l9 4 9-4M3 17l9 4 9-4"/></svg>
1077
1114
  </div>
1078
- <h3>REST &amp; WebSocket</h3>
1079
- <p>Full-featured HTTP client and real-time WebSocket support. Build APIs and consume them from the same container.</p>
1115
+ <h3>Servers &amp; Clients</h3>
1116
+ <p>Express, WebSocket, IPC, MCP. REST and WebSocket clients. Build APIs and real-time systems from the same container.</p>
1080
1117
  </div>
1081
1118
 
1082
- <div class="feature-card fc-cyan anim" style="--i:8">
1083
- <div class="feature-icon">
1084
- <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><circle cx="11" cy="11" r="8"/><path d="M11 7v4l3 3"/></svg>
1119
+ <div class="feature-card fc-purple anim" style="--i:8">
1120
+ <div class="feature-icon" style="--icon-bg: var(--purple-dim); --icon-color: var(--purple-bright);">
1121
+ <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><rect x="3" y="3" width="16" height="16" rx="3"/><path d="M7 8h8M7 11h5M7 14h6"/></svg>
1085
1122
  </div>
1086
- <h3>Observable State</h3>
1087
- <p>Every helper has reactive, observable state. Subscribe to changes, bind UI, react to events across the entire system.</p>
1123
+ <h3>Process &amp; VM</h3>
1124
+ <p>Shell commands with <code>proc.exec()</code>. Sandboxed code execution in the VM. Docker, SSH, and RunPod for remote compute.</p>
1088
1125
  </div>
1089
1126
 
1090
- <div class="feature-card fc-purple anim" style="--i:9">
1091
- <div class="feature-icon" style="--icon-bg: var(--purple-dim); --icon-color: var(--purple-bright);">
1092
- <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M4 6h14M4 11h14M4 16h14"/><circle cx="8" cy="6" r="1.5" fill="currentColor"/><circle cx="14" cy="11" r="1.5" fill="currentColor"/><circle cx="10" cy="16" r="1.5" fill="currentColor"/></svg>
1127
+ <div class="feature-card fc-cyan anim" style="--i:9">
1128
+ <div class="feature-icon">
1129
+ <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><circle cx="11" cy="11" r="8"/><path d="M11 7v4l3 3"/></svg>
1093
1130
  </div>
1094
- <h3>Introspection</h3>
1095
- <p>Every helper self-documents. Auto-generated docs, usage examples, method signatures. Explore your system at runtime.</p>
1131
+ <h3>Observable State</h3>
1132
+ <p>Every helper has reactive state and an event bus. The assistant can watch for changes and act autonomously across the entire system.</p>
1096
1133
  </div>
1097
1134
 
1098
1135
  <div class="feature-card fc-amber anim" style="--i:10">
1099
1136
  <div class="feature-icon" style="--icon-bg: var(--amber-dim); --icon-color: var(--amber-bright);">
1100
- <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M3 7l9-4 9 4-9 4-9-4zM3 12l9 4 9-4M3 17l9 4 9-4"/></svg>
1137
+ <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M4 6h14M4 11h14M4 16h14"/><circle cx="8" cy="6" r="1.5" fill="currentColor"/><circle cx="14" cy="11" r="1.5" fill="currentColor"/><circle cx="10" cy="16" r="1.5" fill="currentColor"/></svg>
1101
1138
  </div>
1102
- <h3>Express &amp; Endpoints</h3>
1103
- <p>File-based endpoint discovery, Express server with OpenAPI generation, static file serving, rate limiting &mdash; out of the box.</p>
1139
+ <h3>Self-Documenting</h3>
1140
+ <p>Every component carries introspection metadata &mdash; method signatures, options, events, state shape. <code>luca describe</code> and agents use the same data.</p>
1104
1141
  </div>
1105
1142
 
1106
1143
  <div class="feature-card fc-green anim" style="--i:11">
1107
1144
  <div class="feature-icon" style="--icon-bg: var(--green-dim); --icon-color: var(--green);">
1108
1145
  <svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M11 3a8 8 0 018 8 8 8 0 01-8 8 8 8 0 01-8-8 8 8 0 018-8z"/><path d="M3 11h18M11 3c2.5 2.8 4 5.8 4 8s-1.5 5.2-4 8c-2.5-2.8-4-5.8-4-8s1.5-5.2 4-8z"/></svg>
1109
1146
  </div>
1110
- <h3>Cross-Runtime</h3>
1111
- <p>Same API on server and browser. Node container for backends, Browser container for frontends. Shared primitives everywhere.</p>
1112
- </div>
1113
- </div>
1114
- </div>
1115
- </section>
1116
-
1117
- <!-- ===== PHILOSOPHY ===== -->
1118
- <section>
1119
- <div class="wrap">
1120
- <div class="sec-label anim" style="--i:0">Philosophy</div>
1121
- <h2 class="sec-title anim" style="--i:1">Docker for Your Runtime</h2>
1122
- <p class="sec-desc anim" style="--i:2">
1123
- Like Docker gives you a complete, reproducible environment for deployment &mdash; Luca gives you a complete, consistent runtime for development.
1124
- </p>
1125
-
1126
- <div class="philosophy">
1127
- <div class="phil-card anim" style="--i:3; --phil-accent: var(--cyan);">
1128
- <div class="phil-num">01</div>
1129
- <h3>Zero Dependencies</h3>
1130
- <p>The container provides everything. File system, networking, git, servers, clients, process execution &mdash; no <code style="font-size:12px; background:var(--cyan-dim); color:var(--cyan-bright); padding:1px 5px; border-radius:3px; font-family:var(--font-mono);">npm install</code> needed.</p>
1131
- </div>
1132
- <div class="phil-card anim" style="--i:4; --phil-accent: var(--purple);">
1133
- <div class="phil-num">02</div>
1134
- <h3>Compose, Don't Configure</h3>
1135
- <p>Features, clients, and servers are composable building blocks. Request what you need from the container, wire it together, ship it.</p>
1136
- </div>
1137
- <div class="phil-card anim" style="--i:5; --phil-accent: var(--amber);">
1138
- <div class="phil-num">03</div>
1139
- <h3>Know Thyself</h3>
1140
- <p>Every component is introspectable. Auto-generated documentation, observable state, full event system. Your app explains itself.</p>
1147
+ <h3>Distributed &amp; Cross-Runtime</h3>
1148
+ <p>Assistants run anywhere &mdash; server, browser, RunPod GPU. They talk over WebSocket, IPC, or REST. Same container pattern on Node and in the browser via ESM.</p>
1141
1149
  </div>
1142
1150
  </div>
1143
1151
  </div>
@@ -1147,42 +1155,63 @@
1147
1155
  <section id="architecture">
1148
1156
  <div class="wrap">
1149
1157
  <div class="sec-label anim" style="--i:0">Architecture</div>
1150
- <h2 class="sec-title anim" style="--i:1">Everything Lives<br>in the Container</h2>
1158
+ <h2 class="sec-title anim" style="--i:1">One Bus.<br>Agents Everywhere.</h2>
1151
1159
  <p class="sec-desc anim" style="--i:2">
1152
- A singleton per process. Event bus, state machine, dependency injector, and registry &mdash; all in one coherent object.
1160
+ The <code style="font-size:14px; background:var(--cyan-dim); color:var(--cyan-bright); padding:2px 8px; border-radius:4px; font-family:var(--font-mono);">assistantManager</code> is the observable hub. Assistants discover their tools from the container, talk to each other across transports, and run on any machine.
1153
1161
  </p>
1154
1162
 
1155
1163
  <div class="arch-visual anim" style="--i:3">
1156
1164
  <div class="arch-container-box">
1157
1165
  <div class="arch-container-label">container</div>
1158
1166
 
1159
- <div class="arch-section-title">Registries</div>
1167
+ <div class="arch-section-title">Assistant Manager &mdash; Observable Orchestration Bus</div>
1168
+ <div class="arch-row">
1169
+ <div class="arch-item at-agent">
1170
+ <div class="arch-type">Agent</div>
1171
+ <div class="arch-name">researcher</div>
1172
+ <div class="arch-detail">browserUse, fs &middot; local</div>
1173
+ </div>
1174
+ <div class="arch-item at-agent">
1175
+ <div class="arch-type">Agent</div>
1176
+ <div class="arch-name">coder</div>
1177
+ <div class="arch-detail">git, proc, fs &middot; local</div>
1178
+ </div>
1179
+ <div class="arch-item at-agent">
1180
+ <div class="arch-type">Agent</div>
1181
+ <div class="arch-name">ui-agent</div>
1182
+ <div class="arch-detail">dom, state &middot; browser</div>
1183
+ </div>
1184
+ <div class="arch-item at-agent">
1185
+ <div class="arch-type">Agent</div>
1186
+ <div class="arch-name">gpu-worker</div>
1187
+ <div class="arch-detail">runpod, cuda &middot; remote</div>
1188
+ </div>
1189
+ </div>
1190
+
1191
+ <div class="arch-divider">connected via WebSocket &middot; IPC &middot; REST</div>
1192
+
1193
+ <div class="arch-section-title">Container Registries</div>
1160
1194
  <div class="arch-row">
1161
1195
  <div class="arch-item at-feature">
1162
- <div class="arch-type">Registry</div>
1163
- <div class="arch-name">features</div>
1164
- <div class="arch-detail">fs, git, proc, vm, grep...</div>
1196
+ <div class="arch-type">Features</div>
1197
+ <div class="arch-name">helpers</div>
1198
+ <div class="arch-detail">fs, git, proc, vm, grep, sqlite...</div>
1165
1199
  </div>
1166
1200
  <div class="arch-item at-client">
1167
- <div class="arch-type">Registry</div>
1168
- <div class="arch-name">clients</div>
1201
+ <div class="arch-type">Clients</div>
1202
+ <div class="arch-name">transports</div>
1169
1203
  <div class="arch-detail">rest, websocket</div>
1170
1204
  </div>
1171
1205
  <div class="arch-item at-server">
1172
- <div class="arch-type">Registry</div>
1173
- <div class="arch-name">servers</div>
1174
- <div class="arch-detail">express, websocket</div>
1206
+ <div class="arch-type">Servers</div>
1207
+ <div class="arch-name">infrastructure</div>
1208
+ <div class="arch-detail">express, websocket, ipc, mcp</div>
1175
1209
  </div>
1176
1210
  <div class="arch-item at-cmd">
1177
- <div class="arch-type">Registry</div>
1178
- <div class="arch-name">commands</div>
1211
+ <div class="arch-type">Commands</div>
1212
+ <div class="arch-name">CLI</div>
1179
1213
  <div class="arch-detail">file-based discovery</div>
1180
1214
  </div>
1181
- <div class="arch-item at-cmd">
1182
- <div class="arch-type">Registry</div>
1183
- <div class="arch-name">endpoints</div>
1184
- <div class="arch-detail">HTTP handlers</div>
1185
- </div>
1186
1215
  </div>
1187
1216
 
1188
1217
  <div class="arch-divider">primitives</div>
@@ -1195,18 +1224,18 @@
1195
1224
  </div>
1196
1225
  <div class="arch-item">
1197
1226
  <div class="arch-type" style="color:var(--text-dim)">Core</div>
1198
- <div class="arch-name">State Machine</div>
1199
- <div class="arch-detail">observable, reactive</div>
1227
+ <div class="arch-name">Observable State</div>
1228
+ <div class="arch-detail">reactive, watchable</div>
1200
1229
  </div>
1201
1230
  <div class="arch-item">
1202
1231
  <div class="arch-type" style="color:var(--text-dim)">Core</div>
1203
- <div class="arch-name">Paths</div>
1204
- <div class="arch-detail">resolve, join, cwd</div>
1232
+ <div class="arch-name">Introspection</div>
1233
+ <div class="arch-detail">self-documenting metadata</div>
1205
1234
  </div>
1206
1235
  <div class="arch-item">
1207
1236
  <div class="arch-type" style="color:var(--text-dim)">Core</div>
1208
- <div class="arch-name">Introspection</div>
1209
- <div class="arch-detail">self-documenting</div>
1237
+ <div class="arch-name">Binary Compiler</div>
1238
+ <div class="arch-detail">luca bundle &rarr; standalone exe</div>
1210
1239
  </div>
1211
1240
  </div>
1212
1241
  </div>
@@ -1217,85 +1246,83 @@
1217
1246
  <!-- ===== CODE EXAMPLES ===== -->
1218
1247
  <section id="code">
1219
1248
  <div class="wrap">
1220
- <div class="sec-label anim" style="--i:0">Developer Experience</div>
1221
- <h2 class="sec-title anim" style="--i:1">Write Less. Build More.</h2>
1249
+ <div class="sec-label anim" style="--i:0">Code</div>
1250
+ <h2 class="sec-title anim" style="--i:1">From Swarm<br>to Standalone Binary</h2>
1222
1251
  <p class="sec-desc anim" style="--i:2">
1223
- Clean, expressive APIs that feel natural. Everything you need is one method call away.
1252
+ Orchestrate a fleet of agents, wire up infrastructure, compile it all to a single executable.
1224
1253
  </p>
1225
1254
 
1226
1255
  <div class="anim" style="--i:3">
1227
1256
  <div class="code-tabs">
1228
- <button class="code-tab active" data-panel="server">Server</button>
1229
- <button class="code-tab" data-panel="files">Files</button>
1230
- <button class="code-tab" data-panel="script">Script</button>
1231
- <button class="code-tab" data-panel="endpoints">Endpoints</button>
1257
+ <button class="code-tab active" data-panel="swarm">Swarm</button>
1258
+ <button class="code-tab" data-panel="assistant">Assistant</button>
1259
+ <button class="code-tab" data-panel="server">Server</button>
1260
+ <button class="code-tab" data-panel="binary">Binary</button>
1232
1261
  </div>
1233
1262
 
1234
1263
  <div class="code-panels">
1235
- <div class="code-panel active" id="panel-server">
1236
- <div class="line"><span class="t-comment">// spin up an Express server with endpoints</span></div>
1237
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">app</span> = container.<span class="t-method">server</span>(<span class="t-str">'express'</span>)</div>
1264
+ <div class="code-panel active" id="panel-swarm">
1265
+ <div class="line"><span class="t-kw">const</span> <span class="t-cmd">mgr</span> = container.<span class="t-method">feature</span>(<span class="t-str">'assistantManager'</span>)</div>
1238
1266
  <div class="line">&nbsp;</div>
1239
- <div class="line"><span class="t-comment">// endpoints are auto-discovered from your files</span></div>
1240
- <div class="line"><span class="t-kw">await</span> app.<span class="t-method">mountEndpoints</span>()</div>
1267
+ <div class="line"><span class="t-comment">// each assistant gets its own tools from the container</span></div>
1268
+ <div class="line">mgr.<span class="t-method">add</span>(<span class="t-str">'researcher'</span>, { <span class="t-key">use</span>: [<span class="t-str">'browserUse'</span>, <span class="t-str">'fs'</span>] })</div>
1269
+ <div class="line">mgr.<span class="t-method">add</span>(<span class="t-str">'coder'</span>, { <span class="t-key">use</span>: [<span class="t-str">'git'</span>, <span class="t-str">'proc'</span>, <span class="t-str">'fs'</span>] })</div>
1270
+ <div class="line">mgr.<span class="t-method">add</span>(<span class="t-str">'reviewer'</span>, { <span class="t-key">use</span>: [<span class="t-str">'git'</span>, <span class="t-str">'fs'</span>] })</div>
1241
1271
  <div class="line">&nbsp;</div>
1242
- <div class="line"><span class="t-comment">// WebSocket server alongside HTTP</span></div>
1243
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">ws</span> = container.<span class="t-method">server</span>(<span class="t-str">'websocket'</span>)</div>
1244
- <div class="line">ws.<span class="t-method">on</span>(<span class="t-str">'connection'</span>, <span class="t-cmd">socket</span> <span class="t-kw">=></span> {</div>
1245
- <div class="line"> socket.<span class="t-method">send</span>(<span class="t-str">'welcome to luca'</span>)</div>
1246
- <div class="line">})</div>
1272
+ <div class="line"><span class="t-comment">// observe the whole fleet</span></div>
1273
+ <div class="line">mgr.<span class="t-method">on</span>(<span class="t-str">'agent:message'</span>, ({ <span class="t-cmd">from</span>, <span class="t-cmd">to</span>, <span class="t-cmd">content</span> }) <span class="t-kw">=></span> { <span class="t-comment">/* ... */</span> })</div>
1274
+ <div class="line">mgr.<span class="t-method">on</span>(<span class="t-str">'agent:stateChange'</span>, ({ <span class="t-cmd">agent</span>, <span class="t-cmd">state</span> }) <span class="t-kw">=></span> { <span class="t-comment">/* ... */</span> })</div>
1247
1275
  <div class="line">&nbsp;</div>
1248
- <div class="line"><span class="t-kw">await</span> app.<span class="t-method">start</span>() <span class="t-comment">// that's it</span></div>
1276
+ <div class="line"><span class="t-kw">await</span> mgr.<span class="t-method">startAll</span>() <span class="t-comment">// launch the swarm</span></div>
1249
1277
  </div>
1250
1278
 
1251
- <div class="code-panel" id="panel-files">
1252
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">fs</span> = container.<span class="t-method">feature</span>(<span class="t-str">'fs'</span>)</div>
1279
+ <div class="code-panel" id="panel-assistant">
1280
+ <div class="line"><span class="t-kw">import</span> <span class="t-cmd">container</span> <span class="t-kw">from</span> <span class="t-str">'luca'</span></div>
1253
1281
  <div class="line">&nbsp;</div>
1254
- <div class="line"><span class="t-comment">// read any file</span></div>
1255
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">data</span> = <span class="t-kw">await</span> fs.<span class="t-method">readFile</span>(<span class="t-str">'config.json'</span>)</div>
1256
- <div class="line">&nbsp;</div>
1257
- <div class="line"><span class="t-comment">// search content across your project</span></div>
1258
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">grep</span> = container.<span class="t-method">feature</span>(<span class="t-str">'grep'</span>)</div>
1259
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">results</span> = <span class="t-kw">await</span> grep.<span class="t-method">run</span>(<span class="t-str">'TODO'</span>, {</div>
1260
- <div class="line"> <span class="t-key">include</span>: [<span class="t-str">'**/*.ts'</span>]</div>
1282
+ <div class="line"><span class="t-kw">const</span> <span class="t-cmd">browser</span> = container.<span class="t-method">feature</span>(<span class="t-str">'browserUse'</span>, { <span class="t-key">headed</span>: <span class="t-val">true</span> })</div>
1283
+ <div class="line"><span class="t-kw">const</span> <span class="t-cmd">assistant</span> = container.<span class="t-method">feature</span>(<span class="t-str">'assistant'</span>, {</div>
1284
+ <div class="line"> <span class="t-key">systemPrompt</span>: <span class="t-str">'You are a web research assistant.'</span>,</div>
1285
+ <div class="line"> <span class="t-key">model</span>: <span class="t-str">'gpt-4.1-mini'</span>,</div>
1261
1286
  <div class="line">})</div>
1262
1287
  <div class="line">&nbsp;</div>
1263
- <div class="line"><span class="t-comment">// intelligent project-wide file awareness</span></div>
1264
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">fm</span> = container.<span class="t-method">feature</span>(<span class="t-str">'fileManager'</span>)</div>
1265
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">files</span> = fm.<span class="t-method">fileIds</span> <span class="t-comment">// every file, indexed</span></div>
1288
+ <div class="line"><span class="t-comment">// browserUse injects its tools automatically</span></div>
1289
+ <div class="line">assistant.<span class="t-method">use</span>(browser)</div>
1290
+ <div class="line"><span class="t-kw">await</span> assistant.<span class="t-method">start</span>()</div>
1291
+ <div class="line">&nbsp;</div>
1292
+ <div class="line"><span class="t-kw">await</span> assistant.<span class="t-method">ask</span>(<span class="t-str">'Go to hacker news and tell me the top 3 stories'</span>)</div>
1266
1293
  </div>
1267
1294
 
1268
- <div class="code-panel" id="panel-script">
1269
- <div class="line"><span class="t-comment">// scripts have the full container at their fingertips</span></div>
1270
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">git</span> = container.<span class="t-method">feature</span>(<span class="t-str">'git'</span>)</div>
1271
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">proc</span> = container.<span class="t-method">feature</span>(<span class="t-str">'proc'</span>)</div>
1295
+ <div class="code-panel" id="panel-server">
1296
+ <div class="line"><span class="t-comment">// spin up an Express server with endpoints</span></div>
1297
+ <div class="line"><span class="t-kw">const</span> <span class="t-cmd">app</span> = container.<span class="t-method">server</span>(<span class="t-str">'express'</span>)</div>
1272
1298
  <div class="line">&nbsp;</div>
1273
- <div class="line"><span class="t-comment">// check git status</span></div>
1274
- <div class="line">console.<span class="t-method">log</span>(git.<span class="t-key">branch</span>) <span class="t-comment">// "main"</span></div>
1275
- <div class="line">console.<span class="t-method">log</span>(git.<span class="t-key">status</span>) <span class="t-comment">// { modified: [...] }</span></div>
1299
+ <div class="line"><span class="t-comment">// endpoints auto-discovered from your files</span></div>
1300
+ <div class="line"><span class="t-kw">await</span> app.<span class="t-method">mountEndpoints</span>()</div>
1276
1301
  <div class="line">&nbsp;</div>
1277
- <div class="line"><span class="t-comment">// run shell commands</span></div>
1278
- <div class="line"><span class="t-kw">const</span> { <span class="t-cmd">stdout</span> } = <span class="t-kw">await</span> proc.<span class="t-method">exec</span>(<span class="t-str">'ls -la'</span>)</div>
1302
+ <div class="line"><span class="t-comment">// WebSocket server alongside HTTP</span></div>
1303
+ <div class="line"><span class="t-kw">const</span> <span class="t-cmd">ws</span> = container.<span class="t-method">server</span>(<span class="t-str">'websocket'</span>)</div>
1304
+ <div class="line">ws.<span class="t-method">on</span>(<span class="t-str">'connection'</span>, <span class="t-cmd">socket</span> <span class="t-kw">=></span> {</div>
1305
+ <div class="line"> socket.<span class="t-method">send</span>(<span class="t-str">'welcome to luca'</span>)</div>
1306
+ <div class="line">})</div>
1279
1307
  <div class="line">&nbsp;</div>
1280
- <div class="line"><span class="t-comment">// isolated VM execution</span></div>
1281
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">vm</span> = container.<span class="t-method">feature</span>(<span class="t-str">'vm'</span>)</div>
1282
- <div class="line"><span class="t-kw">const</span> <span class="t-cmd">result</span> = <span class="t-kw">await</span> vm.<span class="t-method">run</span>(<span class="t-str">'return 2 + 2'</span>)</div>
1308
+ <div class="line"><span class="t-kw">await</span> app.<span class="t-method">start</span>() <span class="t-comment">// that's it</span></div>
1283
1309
  </div>
1284
1310
 
1285
- <div class="code-panel" id="panel-endpoints">
1286
- <div class="line"><span class="t-comment">// endpoints/hello.ts &mdash; file-based routing</span></div>
1287
- <div class="line"><span class="t-kw">export default</span> {</div>
1288
- <div class="line"> <span class="t-key">method</span>: <span class="t-str">'GET'</span>,</div>
1289
- <div class="line"> <span class="t-key">path</span>: <span class="t-str">'/hello/:name'</span>,</div>
1311
+ <div class="code-panel" id="panel-binary">
1312
+ <div class="line"><span class="t-comment"># bootstrap a project</span></div>
1313
+ <div class="line"><span class="t-prompt">$</span> <span class="t-cmd">luca bootstrap my-tool</span></div>
1314
+ <div class="line"><span class="t-prompt">$</span> <span class="t-cmd">cd my-tool</span></div>
1290
1315
  <div class="line">&nbsp;</div>
1291
- <div class="line"> <span class="t-kw">async</span> <span class="t-fn">handler</span>(<span class="t-cmd">req</span>, <span class="t-cmd">res</span>, <span class="t-cmd">container</span>) {</div>
1292
- <div class="line"> <span class="t-comment">// full container access in every handler</span></div>
1293
- <div class="line"> <span class="t-kw">const</span> <span class="t-cmd">fs</span> = container.<span class="t-method">feature</span>(<span class="t-str">'fs'</span>)</div>
1294
- <div class="line"> <span class="t-kw">const</span> <span class="t-cmd">template</span> = <span class="t-kw">await</span> fs.<span class="t-method">readFile</span>(<span class="t-str">'greeting.html'</span>)</div>
1316
+ <div class="line"><span class="t-comment"># add your own stuff</span></div>
1317
+ <div class="line"><span class="t-prompt">$</span> <span class="t-cmd">luca scaffold command</span> <span class="t-str">analyze</span></div>
1318
+ <div class="line"><span class="t-prompt">$</span> <span class="t-cmd">luca scaffold feature</span> <span class="t-str">myCache</span></div>
1319
+ <div class="line"><span class="t-prompt">$</span> <span class="t-cmd">luca scaffold endpoint</span> <span class="t-str">status</span></div>
1295
1320
  <div class="line">&nbsp;</div>
1296
- <div class="line"> res.<span class="t-method">json</span>({ <span class="t-key">hello</span>: req.params.<span class="t-key">name</span> })</div>
1297
- <div class="line"> }</div>
1298
- <div class="line">}</div>
1321
+ <div class="line"><span class="t-comment"># compile to a single binary</span></div>
1322
+ <div class="line"><span class="t-prompt">$</span> <span class="t-cmd">luca bundle</span></div>
1323
+ <div class="line">&nbsp;</div>
1324
+ <div class="line"><span class="t-output"> &rarr; dist/my-tool (standalone, no dependencies)</span></div>
1325
+ <div class="line"><span class="t-output"> &rarr; your commands, features, assistants &mdash; baked in</span></div>
1299
1326
  </div>
1300
1327
  </div>
1301
1328
  </div>
@@ -1308,33 +1335,33 @@
1308
1335
  <div class="sec-label anim" style="--i:0">Command Line</div>
1309
1336
  <h2 class="sec-title anim" style="--i:1">A CLI That<br>Understands Your Code</h2>
1310
1337
  <p class="sec-desc anim" style="--i:2">
1311
- Run code, generate docs, serve apps, explore registries &mdash; all from your terminal.
1338
+ Discover, prototype, serve, and compile &mdash; all from your terminal. Your AI assistant uses the same commands.
1312
1339
  </p>
1313
1340
 
1314
1341
  <div class="cli-grid">
1315
1342
  <div class="cli-card anim" style="--i:3">
1316
- <div class="cli-cmd">luca eval "container.features.available"</div>
1317
- <div class="cli-desc">Run arbitrary JavaScript against the live container. Inspect state, test features, explore registries interactively.</div>
1343
+ <div class="cli-cmd">luca bootstrap my-app</div>
1344
+ <div class="cli-desc">Scaffold a complete project with commands, endpoints, features, docs, and AI assistant config &mdash; everything wired up.</div>
1318
1345
  </div>
1319
1346
  <div class="cli-card anim" style="--i:4">
1320
1347
  <div class="cli-cmd">luca describe fs</div>
1321
- <div class="cli-desc">Auto-generated documentation for any feature, client, or server. Methods, options, state, events &mdash; all introspected.</div>
1348
+ <div class="cli-desc">Auto-generated documentation for any feature, client, or server. Methods, options, state, events &mdash; all introspected at runtime.</div>
1322
1349
  </div>
1323
1350
  <div class="cli-card anim" style="--i:5">
1324
- <div class="cli-cmd">luca serve</div>
1325
- <div class="cli-desc">Start an Express server that auto-discovers your endpoints/ folder. OpenAPI docs, static files, and hot reload included.</div>
1351
+ <div class="cli-cmd">luca eval "container.features.available"</div>
1352
+ <div class="cli-desc">Run arbitrary JavaScript against the live container. Inspect state, test features, explore registries interactively.</div>
1326
1353
  </div>
1327
1354
  <div class="cli-card anim" style="--i:6">
1328
- <div class="cli-cmd">luca describe servers</div>
1329
- <div class="cli-desc">Explore entire registries at once. See every available server, client, or feature with their full documentation.</div>
1355
+ <div class="cli-cmd">luca serve</div>
1356
+ <div class="cli-desc">Start an Express server that auto-discovers your endpoints/ folder. OpenAPI docs and static files included.</div>
1330
1357
  </div>
1331
1358
  <div class="cli-card anim" style="--i:7">
1332
- <div class="cli-cmd">luca console</div>
1333
- <div class="cli-desc">Drop into an interactive REPL with the full container in scope. Every feature, client, and server at your fingertips.</div>
1359
+ <div class="cli-cmd">luca bundle</div>
1360
+ <div class="cli-desc">Compile your project into a standalone binary. Custom commands, features, endpoints, and assistants &mdash; all baked in.</div>
1334
1361
  </div>
1335
1362
  <div class="cli-card anim" style="--i:8">
1336
- <div class="cli-cmd">luca run scripts/deploy.ts</div>
1337
- <div class="cli-desc">Execute scripts with the container pre-loaded. No imports needed &mdash; your script gets the full runtime automatically.</div>
1363
+ <div class="cli-cmd">luca console</div>
1364
+ <div class="cli-desc">Drop into a full REPL with the container in scope. Every feature, client, and server at your fingertips.</div>
1338
1365
  </div>
1339
1366
  </div>
1340
1367
  </div>
@@ -1344,12 +1371,12 @@
1344
1371
  <section class="cta" id="get-started">
1345
1372
  <div class="wrap">
1346
1373
  <div class="cta-box anim" style="--i:0">
1347
- <h2>Start Building with Luca</h2>
1348
- <p>One container. Every feature. Zero dependencies.</p>
1374
+ <h2>One Download, Unlimited Potential</h2>
1375
+ <p>No dependencies. No node_modules. Agents that talk to each other out of the box.</p>
1349
1376
 
1350
- <div class="install-cmd" onclick="navigator.clipboard.writeText('bun add luca')">
1377
+ <div class="install-cmd" onclick="navigator.clipboard.writeText('curl -fsSL https://luca-js.soederpop.com/install.sh | bash').then(() => { this.querySelector('.copy-hint').textContent = 'copied!'; setTimeout(() => this.querySelector('.copy-hint').textContent = 'click to copy', 2000) })">
1351
1378
  <span class="t-prompt">$</span>
1352
- <span>bun add luca</span>
1379
+ <span>curl -fsSL https://luca-js.soederpop.com/install.sh | bash</span>
1353
1380
  <span class="copy-hint">click to copy</span>
1354
1381
  </div>
1355
1382
 
@@ -1358,7 +1385,7 @@
1358
1385
  <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg>
1359
1386
  View on GitHub
1360
1387
  </a>
1361
- <a href="#features" class="btn btn-secondary">Explore Docs</a>
1388
+ <a href="#code" class="btn btn-secondary">See the Code</a>
1362
1389
  </div>
1363
1390
  </div>
1364
1391
  </div>
@@ -1367,8 +1394,8 @@
1367
1394
  <!-- ===== FOOTER ===== -->
1368
1395
  <footer>
1369
1396
  <div class="wrap">
1370
- <p>Luca &mdash; Lightweight Universal Conversational Architecture</p>
1371
- <p style="margin-top:8px">Built with <a href="https://bun.sh" target="_blank" rel="noopener">Bun</a>. Designed for developers who build.</p>
1397
+ <p>Luca &mdash; An agent-native TypeScript runtime that ships as a single binary.</p>
1398
+ <p style="margin-top:8px">Built with <a href="https://bun.sh" target="_blank" rel="noopener">Bun</a>. Designed for humans and agents.</p>
1372
1399
  </div>
1373
1400
  </footer>
1374
1401