Coldbrew is a calm local coding-agent CLI inspired by Mihail Eric's article.
It uses LLMlibrary conversations with local function tools:
list_fileslist_treesearch_filesgit_diffrun_commandread_fileread_many_fileswrite_fileedit_fileapply_patch
Write/edit/patch tools are enabled by default. Pass --dry-run to preview changes without writing.
This is a local coding-agent demo, not a full sandbox. It can read and write files under the configured project root.
Use --dry-run when you want read-only previews.
pnpm install
cp .env.example .env
pnpm build
pnpm install:cliSet OPENAI_API_KEY in your environment or .env. Optionally set OPENAI_MODEL; the CLI defaults to gpt-5.4.
Install rg/ripgrep for fast code search. On macOS:
brew install ripgrepAfter installing the wrapper, the coldbrew command is available from your shell. The installer also provides agent as a convenience alias.
By default pnpm install:cli writes small wrappers to ~/.local/bin/coldbrew and ~/.local/bin/agent. That directory is commonly on PATH. To choose another directory:
COLDBREW_BIN_DIR=/usr/local/bin pnpm install:clicoldbrew "List the files in this project"
coldbrew "Search for createFileTools in src"
coldbrew --dry-run "Preview a README.md update"
coldbrew --max-output-tokens 24000 "Create a single-file HTML game"
coldbrew --sessions
coldbrew --resume 20260620T120000Z-list-files-abc123ef "continue from there"You can also run through pnpm during development:
pnpm coldbrew "List the files in this project"Use --root <path> to point the tools at another project root.
Coldbrew persists LLMlibrary conversations locally by passing a file-backed SessionStore into LLMClient.fromEnv(). By default, sessions are saved under:
~/.coldbrew/sessions
Each agent run prints its session id. Resume it later with:
coldbrew --resume <session-id>
coldbrew --resume <session-id> "continue the task"When a saved session is resumed, Coldbrew prints the stored message history before accepting the next prompt. Tool calls and tool results are summarized so the terminal stays readable.
Session commands:
--sessions- list saved local sessions--session <id>- use or create a named session--delete-session <id>- delete a saved session--history-dir <path>- use another local history directory--no-history- keep the current run out of durable history
Interactive commands:
:session- show the current session id and history directory:sessions- list saved sessions:clear- clear in-memory conversation state and remove the saved session until the next message
Coldbrew uses LLMlibrary's native unified-llm-client/agent-files support for repository instructions and skills.
Repository instructions are loaded from AGENTS.md files under the project root. LLMlibrary also accepts AGENTS.override.md, agent.md, and Agent.md.
Skills are reusable instruction packs. They add task-specific guidance to the model; they do not add new shell commands or executable tools.
Default skill search path:
<project>/.agents/skills/*/SKILL.md
Example:
.agents/skills/frontend-review/
SKILL.md
---
name: frontend-review
description: Review React UI changes for usability, accessibility, and regressions.
triggers: react, ui review, accessibility
---
# Frontend Review
Inspect changed UI files before commenting. Prioritize concrete bugs, layout breakage, accessibility regressions, and missing tests.List discovered skills:
coldbrew --skillsUse a skill explicitly:
coldbrew --skill frontend-review "Review the UI changes"Add a custom search directory:
coldbrew --skills-dir ./team-agent-root --skill docs "Update the README"Disable skills:
coldbrew --no-skills "List the files in this project"--skills-dir points at another native agent root containing .agents/skills. When no skill is selected explicitly, Coldbrew activates matching skills by comparing the task with skill names, descriptions, and trigger metadata.
Start the agent once:
coldbrewThen type normally:
list the files in src
summarize README.md
:allow-edits
:session
:sessions
:skills
:use-skill frontend-review
create the file we discussed
exit
Each line is sent to the same LLMlibrary conversation, so follow-up requests can refer to prior turns. Type exit, quit, or :q to close the session.
Coldbrew defaults to 16000 output tokens per model turn so file-writing tool calls have room to include complete file contents. Use --max-output-tokens <n> for unusually large generated files.
Interactive commands:
:status- show current model/root/edit mode and memory count:session- show the current session id and history directory:sessions- list saved local sessions:allow-edits- enable writes for the current session:dry-run- return to dry-run edit mode:skills- list discovered skills:use-skill <name>- keep a skill active for later prompts:clear-skills- remove manually active skills:reload-skills- reload skills from disk:clear- clear conversation memory
pnpm test
pnpm build- DEVELOPERS.md: architecture, tool loop, local command setup, and safety notes.
- CONTRIBUTING.md: contribution workflow and project expectations.
- SECURITY.md: vulnerability reporting and safety boundaries.
- CODE_OF_CONDUCT.md: community expectations.
MIT