iresharma/codeloom.md

live

CodeLoom

The latest venture. He named it like a company, licensed it MIT, stood up four coming-soon sites, and wrote in the GitHub description that it is an 'aducative' attempt at Devin — typo included, honesty included. Then he published the part that is not a landing page: an agent cannot grep a real repo and call it architecture.

CodeLoom is a family of surfaces around one job: take a ticket, understand the repository, patch it, run tests, open a pull request. The public pitch is a Devin-shaped loop. The actual engineering so far is the comprehension layer — how an agent reads code without burning the context window — plus a deliberately small tool-use runtime that proves the loop is a loop, not a framework.

What it is

The mother repo is an educational attempt at an end-to-end coding agent, with experiments and docs checked in on purpose. Submodules point at the experiment scripts and at a Turborepo of four Next.js landings — agent, IDE, TUI, CLI — so the family looks like a product line while the runtime is still being grown in public. The landing copy is load-bearing: explore, patch, test, pull request. You keep the merge button.

CodeLoom is a Devin-shaped agent that explores the repo, plans, patches, runs tests, and opens a PR. Educational, open, and still very coming soon.
codeloom.iresharma.com
An aducative attempt at making something like devin, since it is an educative attempt this repo includes all experiment and relate docs
github.com/iresharma/codeloom

The first problem is not generation

The blog post that belongs to this project is not a launch announcement. It is a systems argument. Before an agent can safely edit a codebase it has to answer local questions (where is this function) and relational ones (what calls it, what does the type checker think, is this even valid). Handing the model read_file and grep works on a toy. On anything real it rereads whole files for one symbol, and it cannot tell two parse_config functions apart across directories.

If you're building something like Devin, an agent that goes end-to-end from a task description to a working code change. The very first problem you hit isn't code generation. It's comprehension.
WatchIreshStruggle · Aug 2026

The design is two tools that sound similar and are not. Tree-sitter parses one file in milliseconds, finds definition-shaped nodes, and returns 1-based coordinates. LSP is a long-running JSON-RPC process — initialize handshake, a background reader thread because servers talk back, warm-start because gopls and pyright do their expensive work as a side effect of didOpen. Tree-sitter does not resolve imports. LSP does. The system prompt tells the model to prefer the cheapest tool that answers the question.

That's a small detail, but it matters LSP calls are positional (a line/column in a file), and models are bad at counting characters by eye from a text dump. Tree-sitter becomes the thing that hands the model correct coordinates to hand back to the LSP.
WatchIreshStruggle · three ways to read code
  • find_symbol is tree-sitter: parse this file, match a name, return a position. No project index. Works with broken imports elsewhere.
  • goto_definition, find_references, hover, get_diagnostics are LSP. pyright, gopls, typescript-language-server — each configured honestly, not as one generic server.
  • Warm-start opens up to 500 source files in a background thread so indexing overlaps the agent's first exploration turns.
  • Tools speak 1-based lines to the model; LSP is 0-based. Every call translates both ways. Wrong by one is a silent wrong edit.
  • Open questions written down on purpose: diagnostics live in memory, no didChange yet, no invalidation after the agent starts writing.

The runtime is a while loop

The experiments repo is the other half of the honesty. The first script is a single-file CLI agent: Claude tool-use, a dict of Python functions, a turn cap so a buggy loop cannot run forever. read_file, write_file, run_shell. No hidden state. That is the shape everything else has to earn.

Nothing here is magic. There's no framework, no hidden state. Just a while loop, a dict of Python functions, and the Claude API's tool-use feature.
codeloom.experiments · ex_1.py

The pages repo is pnpm workspaces and Turborepo: four Next.js apps, shared UI, product metadata and hosts in packages/config. Railway, one service per surface. The README is explicit that these are not a company. They are an open-source resume with a domain name.