Golem

In development
GoBubble TeaOllama

Golem is a Go agent harness with minimal framework dependencies. The project takes inspiration from Claude Code and provides a portable runtime for LLM agents operating across different environments.

Why build a harness

My professional work involves agent systems for defined problems: extracting particular data, answering particular questions, or automating a workflow. A general-purpose harness faces the opposite challenge: handling a broad range of tasks. Golem explores general-purpose agent design without client-specific requirements driving the work.

The first milestone is a capable replacement for Claude Code in my development workflow. Success on demanding, practical development work will provide a foundation for further experiments.

I am writing Golem in Go for two reasons. Go suits an agent harness as a single binary with robust concurrency primitives and systems-programming ergonomics. Limiting framework dependencies while building in a language I am still learning also requires direct engagement with every design decision.

Why I am building without coding agents

Writing Golem without coding-agent assistance reflects the discipline I consider essential to effective AI-assisted development.

Discussions about AI-assisted development often take two positions: limit AI tools to protect programming skills, or rely entirely on prompting because code generation has replaced programming. Each position captures an important point, but neither is sufficient. Prompt-led projects develop context-engineering skills and maintain practical familiarity with rapidly changing models. Knowledge about agentic coding from six months ago is already partly obsolete, so AI fluency requires continuous practice.

Manual implementation also matters. Coding without agents allows slower, more detailed examination of design and implementation decisions. Agent-assisted development directs attention toward higher-level decisions and leaves less time to reflect on system behavior at a granular level. Manual implementation remains necessary for a detailed understanding of system behavior and model limitations.

Building a Go harness without coding-agent assistance supports two goals: deeper Go proficiency and a more complete understanding of agent systems.

How it’s built

The architecture centers on a reusable core agent. Identical code executes the parent agent and its subagents, with parameters such as maximum step count.

Subagents receive stricter limits, including smaller step budgets, to preserve parent-agent control of the loop. The parent agent invokes subagent creation as a tool.

Tools reside in a dedicated directory. New tool integration requires implementing the tool interface and registering the tool with the dispatcher. After an open-source release, contributors can build Go-native tools or maintain fork-specific tools without modifying the core runtime.

Model access follows the Neuromod pattern: a thin provider-neutral layer for operating Golem with different models.

Ollama-hosted local models are a priority for testing, both to reduce development inference costs and to verify behavior across provider-specific differences.

Status

Golem is an early-stage but functional terminal agent. The current implementation includes a bounded agent loop; Bash, read, write, and edit tools; in-memory conversation state; application-level filesystem boundaries; project-local, persisted tool permissions; streaming Anthropic and Ollama provider integrations; and a Bubble Tea terminal UI with approval prompts, cancellation, prompt queueing, and scrollable history.

Remaining work includes persistent conversations, agent memory and system-prompt assembly, OS-level sandboxing, hooks, and MCP support. The first milestone is a stable replacement for Claude Code in my development workflow. An open-source release will follow.