Open-source, self-hosted, and honestly yours — the DIY path to a personal AGI.
›About agi-diy
agi.diy — "Build your own AGI. In your browser." Repo: cagataycali/agi-diy. License: Apache-2.0. Author: ./c² (@cagataycali). Live at https://agi.diy.
STACK: Strands Agents TypeScript SDK. 100% client-side (single-file JS/HTML). No backend. Data in localStorage; settings sync AES-256-GCM encrypted.
MODELS: Bring-your-own-key (Anthropic, OpenAI, AWS Bedrock) OR fully local/offline via WebLLM on WebGPU (Qwen 2.5, Llama 3.2, Hermes). Bedrock streaming works via hand-parsed binary event-stream framing (12-byte prelude + header length + CRC trailer) in pure browser JS.
MODES: index.html = single agent. agi.html = multi-agent with ring-buffer shared context.
CORE LOOP: browser agent selects tools → calls model → executes in-browser → renders result.
TOOLS: create_tool (model writes JS, compiled via new Function(), hot-loaded into agent.tools[] live), update_self (rewrite own prompt + tools at runtime), javascript_eval (uses eval()), screen-capture for pair programming, Gmail/Google OAuth, gmail_send, cron scheduling, Maps, ambient idle thinking.
SELF-MODIFICATION: real self-EXTENSION at the harness layer (tool creation + prompt editing on a standard LLM). NOT weight-learning. "AGI"/"self-evolving" naming is aspirational marketing; be honest about the mechanism.
SECURITY: eval + new Function + Gmail OAuth = a prompt-injected model can run arbitrary code against the user's Google account. Intentional for a personal sandbox; it's the reason the descendant tiny.technology sandboxes its create_tool (no eval/process, call-time keys only).
LINEAGE (self-modification family tree): G0 agi.diy (seed, harness-layer self-mod) → G1 {slm = weight-layer plastic-LoRA test-time training; harness-optimizer = reward-driven prompt/context optimization; strands-coder = runtime prompt-rewrite in a live GitHub CI agent} → G2 tiny.technology (direct descendant, same create_tool DNA, sandboxed). Unifying question across all: "can an agent change itself?"