Open SourceASHFOG ARTICLE

Five Agent Infrastructure Projects That Solve What Bigger Context Windows Cannot

Beads, Crush, Claude Context, TradingAgents and ML Intern each address a different failure mode in AI work: memory, interface, retrieval, coordination and execution.

Abstract open-source forms and signal paths on a light field

The next bottleneck in AI-assisted development is not simply model intelligence.

Modern coding agents can already write functions, inspect repositories, run commands and revise their own work. They still fail in predictable ways. They forget why a task exists after a long session. They waste context on irrelevant files. They become difficult to supervise inside a plain terminal. Multiple agents duplicate work or make incompatible changes. Specialized jobs such as model training require far more than code generation.

Five projects—Beads, Crush, Claude Context, TradingAgents and ML Intern—approach those failures from different layers of the stack.

They are often grouped together as AI tools, but they are not competitors. Beads supplies persistent project memory. Crush provides an interactive coding shell. Claude Context retrieves the right code. TradingAgents demonstrates role-based coordination. ML Intern turns an agent into a domain-specific machine-learning operator.

Together, they show where the open agent ecosystem is moving: away from one giant prompt and toward durable infrastructure around the model.

Project Primary layer Core problem
Beads Persistent task and memory graph Long-running agents lose plans, dependencies and handoff state
Crush Terminal agent interface Coding agents are hard to supervise and configure in the CLI
Claude Context Code retrieval Large repositories overflow context windows with irrelevant code
TradingAgents Multi-agent organization One model lacks role separation and structured disagreement
ML Intern Domain execution ML work requires research, code, compute, evaluation and reproducibility

Beads turns agent memory into project infrastructure

Beads, created by Steve Yegge and now hosted under the Gas Town organization, describes itself as a distributed graph issue tracker for AI agents.

Its central idea is that an agent should not keep the project plan only inside a conversation. Conversations are temporary, compressible and tied to one session. Project state should instead exist as structured records that another agent—or the same agent after a restart—can query.

A Beads project contains tasks, dependencies, status, ownership, comments and remembered insights. Commands such as bd ready, bd show, bd update --claim, bd close and bd remember give an agent a compact operational vocabulary. The dependency graph allows it to identify work that is actually unblocked rather than rereading a Markdown plan and guessing what comes next.

Hash-based identifiers such as bd-a1b2 reduce collisions when several agents create records independently. Hierarchical identifiers represent epics, tasks and subtasks. Closed work can be compacted so that old history becomes a shorter semantic summary instead of consuming the same amount of context forever.

The project is frequently summarized as “Git-backed JSONL memory.” That description reflects an earlier and simpler mental model, but it is no longer technically complete.

Current Beads uses Dolt, a version-controlled SQL database, as its storage engine. Data normally lives under .beads/, supports native branching and can synchronize through a Dolt remote. The .beads/issues.jsonl file remains useful for interchange and human-readable export, but the documentation explicitly says it is not the source of truth or a backup.

That evolution matters. A flat JSONL file is easy to commit, but concurrent agents eventually need atomic claims, structured queries, conflict-aware merges and reliable synchronization. Beads has grown from a small memory file into a task database designed for multiple agents and machines.

Its limitation is overhead. A short solo coding session may not need a dependency graph, a database or workflow commands. Beads becomes valuable when work outlives a context window, crosses branches or requires reliable handoffs. It is infrastructure for long-horizon development, not a replacement for every to-do list.

Crush makes the terminal agent feel like an application

Crush comes from Charmbracelet, the team behind Bubble Tea and a large ecosystem of terminal-interface libraries.

The visual polish is the obvious attraction. Crush turns an agent session into a responsive terminal application with navigable messages, permissions, session management and model controls. That matters because terminal coding agents frequently ask users to supervise complex sequences of edits and commands through an interface designed for line-oriented output.

The deeper value is its integration layer.

Crush supports many model providers and custom OpenAI- or Anthropic-compatible endpoints. A user can switch models during a session while preserving the conversation. Language Server Protocol integrations provide code intelligence, while MCP servers add external tools over stdio, HTTP or SSE. Sessions are stored per project, and several clients can attach to a shared workspace.

This makes Crush less like a decorative wrapper and more like a model-agnostic agent host. The TUI is the control surface for provider routing, code context, tool execution and approvals.

Its permissions are especially important. Crush asks before running tools unless the user explicitly allows them or starts the application with the deliberately dangerous --yolo option. The documentation also warns that crush.json is trusted code: shell substitutions in configuration can execute with the user’s privileges before the interface appears. A polished terminal does not remove the security consequences of giving an agent access to files, shells and MCP tools.

There is also a licensing caveat. Crush’s source is public, but it uses FSL-1.1-MIT, not an immediately permissive MIT license. It is more accurate to call the current release source-available than conventional open source. That distinction does not reduce its technical relevance, but it matters for companies deciding whether they can embed or redistribute it.

Crush’s strongest contribution is therefore not merely “a prettier Claude Code.” It demonstrates that agent UX is an infrastructure problem. As agents take longer actions, users need clear state, resumable sessions, permission queues and model transparency—not just streaming text.

Claude Context treats the context window as a retrieval budget

Claude Context addresses a different failure mode: the tendency to confuse more context with better context.

Sending an entire repository to a model is expensive and noisy. Large directory trees contain generated files, repeated patterns, tests, documentation and modules unrelated to the current question. Even when the context window is large enough, irrelevant material can make code localization worse.

Claude Context indexes a repository and exposes code search through MCP. Its pipeline combines BM25 lexical matching with dense-vector retrieval, uses AST-aware chunking where possible and incrementally updates changed files with Merkle-tree tracking. The indexed vectors live in Milvus or Zilliz Cloud, while embeddings can come from OpenAI, Voyage AI, Gemini or Ollama.

When an agent asks where authentication is implemented, the MCP server returns a small set of relevant code spans rather than an entire source tree. The result can be used by Claude Code, Cursor-compatible workflows and other MCP clients.

The project reports roughly a 40 percent token reduction in its controlled evaluation when retrieval quality is held equivalent. That is a project-produced result rather than an independent benchmark, but the underlying economic logic is sound: an embedding and search step can be cheaper than repeatedly loading broad sections of a large repository.

Claude Context also reveals the cost of retrieval infrastructure. It requires an embedding model and a vector database. Indexing can fail, local deployment requires setup, and retrieval can omit a file the model would have found through direct exploration. Hybrid search improves recall but does not guarantee that the right implementation detail appears in the top results.

The best use is therefore not to make the agent blind to the filesystem. It is to give the agent a high-quality first pass. Retrieval should narrow the search space, while ordinary file inspection and tests verify the answer.

TradingAgents is more useful as an organization chart than a trading oracle

TradingAgents models a financial trading firm as a graph of specialized language-model agents.

Fundamental, sentiment, news and technical analysts prepare different views of the market. Bull and bear researchers debate the case. A research manager synthesizes their arguments. A trader proposes an action, while risk agents examine the decision from aggressive, neutral and conservative positions before a portfolio manager produces the final result.

The design is built with LangGraph and supports checkpointing, persistent decision logs and multiple model providers. Its value is easy to understand: complex decisions benefit from explicit role separation and structured disagreement.

However, “debate and voting” is an oversimplification. The framework does not become reliable merely because several prompts speak in sequence. The agents often share the same underlying model, source data and blind spots. A manager agent can summarize a confident but collectively mistaken discussion. More calls also mean more latency, cost and opportunities for nondeterminism.

The repository is explicit that it is a research framework, not financial advice. Trading performance depends on data quality, date handling, model choice, prompts and market conditions. No architecture diagram turns an LLM simulation into a validated trading firm.

Its most transferable contribution lies outside finance.

A code-review system could assign security, performance, maintainability and test-coverage roles before a review manager reconciles the findings. Contract analysis could separate commercial, privacy and liability perspectives. Incident response could divide infrastructure, application and security investigation. The reusable pattern is not the stock recommendation; it is the controlled production of competing analyses followed by an accountable synthesis step.

TradingAgents is therefore best read as a template for organizational cognition: make perspectives explicit, preserve their evidence and delay the final decision until disagreement has been surfaced.

ML Intern packages an entire machine-learning work loop

ML Intern is the most domain-specific project in the group.

It is an agent from Hugging Face designed to research, write and ship machine-learning code using the Hugging Face ecosystem. It can search documentation and papers, inspect datasets, write training scripts, launch compute jobs, evaluate results and publish artifacts. The CLI supports hosted models from several providers as well as local OpenAI-compatible endpoints such as Ollama, vLLM, LM Studio and llama.cpp servers.

This addresses a real gap between coding agents and ML engineering.

A request such as “fine-tune a small model on this dataset” is not one programming task. It requires checking the data schema, choosing a training method, reading model documentation, estimating hardware, writing configuration, launching a job, monitoring failures, evaluating checkpoints and preserving enough evidence to reproduce the result.

ML Intern provides tools for those steps and can run an agentic loop for hundreds of iterations. Sensitive operations and cloud jobs can require approval, while a doom-loop detector watches for repeated tool patterns.

Its trace system is particularly notable. Sessions can be uploaded to a private Hugging Face dataset in Claude Code JSONL format so that tool calls, model messages and decisions can be inspected later. Users can make those traces public or disable sharing. Reproducibility becomes part of the product rather than an afterthought.

That default also deserves attention. A private dataset is not the same as purely local logging. Teams working with confidential code or data should understand what is uploaded, review the configuration and opt out when necessary.

ML Intern does not remove the cost of machine learning. Users still need model API access, Hugging Face credentials and potentially paid GPU compute. Generated training code can fail, benchmark choices can be wrong and an apparently successful run can overfit or leak evaluation data. The agent accelerates the loop; it does not replace scientific judgment.

These projects form a stack, not a leaderboard

The five projects solve different constraints and can be combined.

A coding agent could use Beads to select the next unblocked task, operate through Crush, query Claude Context for relevant files and record the result back into the task graph. A multi-agent review inspired by TradingAgents could inspect the change from several perspectives. ML Intern could take over when the task becomes a model-training experiment rather than ordinary application code.

That combined workflow also exposes the main risk of agent infrastructure: every layer adds state and authority.

A task database can contain stale assumptions. Retrieval can hide relevant code. A terminal agent can execute destructive commands. Multi-agent debate can multiply the same hallucination. An ML operator can spend real compute on a flawed experiment. More orchestration is not automatically more reliability.

The practical design principles are consistent across all five projects:

  1. Store durable state outside the conversation.
  2. Retrieve narrowly, then verify against primary artifacts.
  3. Separate read access from consequential actions.
  4. Make roles and decision boundaries explicit.
  5. Preserve traces so failures can be reconstructed.
  6. Keep the model replaceable where possible.

These principles matter more than any single model benchmark.

The agent ecosystem is becoming a systems-engineering discipline. Beads, Crush, Claude Context, TradingAgents and ML Intern each show that better results come not only from a smarter model, but from giving that model the right memory, interface, evidence, organization and execution environment.

Bigger context windows help. They do not solve those problems by themselves.