1769ec280370f6d509db37dff8cbefc87ef842e4
One choke point in the sanitized client: the flavor is probed once (the boilerroom wrapper names itself on /health, a bare llama-server serves /props, Ollama answers neither) and every completion adapts. The agents' tool_choice "required" survives only on Ollama — advisory there, enforced by llama-server, an unbreakable tool loop through the wrapper. Through the wrapper every completion carries webber's session identity: session webber, eviction_order 20 in the decided ranking, configurable via settings. The wrapper's balancing and compaction signals are read from the response body's extra fields — an httpx event-hook variant was tried and never fires under the openai SDK. The enabling fix: the sanitized client was never in the request path. The provider assigned self._openai_client, an attribute nobody reads — OllamaProvider.client serves self._client — so every completion has bypassed the null-content sanitizer since the class was introduced. Exposed when the wrapper 503'd a session-less request the choke point should have named; the client now goes through the constructor's official openai_client parameter, and a wiring test pins provider.client to the sanitized type. The same bug exists in tatlock (its T-6, filed). Verified against the live wrapper from the dev server: flavor boilerroom detected, a tool-using explore run answered in 4.8 s with no tool loop, webber resident at rank 20, and the wrapper parked librarian and tatlock-experts to seat it — the ranking doing exactly its job. Six new tests (227 green), five mutation-checked: the rank default, the strip condition, the session-add condition, the no-cache-on-failure rule, and the client wiring. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Webber - Multi-Agent AI Development System
A Claude Code-inspired development assistant powered by local LLMs via Ollama.
Features
- 3 Agents - Explore (read-only), Plan (architecture), Task (orchestrator)
- 8 Tools - File read/write/edit, glob, grep, bash, web search
- Conversations - Multi-turn memory with context summarization
- Streaming - Real-time response display
- Self-hosted - Runs on your own hardware with Ollama
Structure
This is a monorepo containing three subprojects:
| Directory | Description |
|---|---|
webber-api/ |
FastAPI backend server with agent orchestration |
webber-cli/ |
Command-line client for interacting with the API |
webber-sandbox/ |
Test project for functional testing |
Additional Directories
| Directory | Description |
|---|---|
sandbox-templates/ |
Reusable project templates for the sandbox |
.gitea/workflows/ |
CI/CD workflows for releases |
Quick Start
1. Start the API Server
cd webber-api
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt -r requirements-dev.txt
./wakeup.sh
2. Set Up the CLI
cd webber-cli
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .
# Test connection
webber-cli status
3. Explore with Webber
# One-shot exploration
webber-cli explore "find all bugs in the code" -d /path/to/project
# Interactive chat
webber-cli chat -d /path/to/project
Available Tools
| Tool | Description |
|---|---|
read_file |
Read file contents with line numbers |
glob_files |
Find files by pattern |
grep_content |
Search file contents with regex |
bash_readonly |
Safe bash commands (ls, git status, etc.) |
edit_file |
Find-and-replace editing |
write_file |
Create/overwrite files |
bash |
Full bash with safety controls |
web_search |
Search web via SearXNG |
Agents
| Agent | Purpose | Tools |
|---|---|---|
| Explore | Fast codebase navigation, search | Read-only (glob, grep, read, bash_readonly) |
| Plan | Design implementation strategies | Read-only (same as Explore) |
| Task | Autonomous multi-step execution | All tools + spawn_agent |
API Endpoints
# Stateless agent execution
POST /agents/run # Execute agent, get response
POST /agents/stream # Execute with SSE streaming
GET /agents/ # List available agents
# Stateful conversations (multi-turn memory)
POST /conversations/ # Create conversation
GET /conversations/ # List conversations
POST /conversations/{id}/messages # Add message, get agent response
Versioning
This project uses prefixed tags for independent release cycles:
api/v0.4.0- Triggers API Docker build and deploymentcli/v0.1.0- Triggers CLI installer build (future)
Requirements
- Python 3.12+
- Ollama running with
gemma4:e2bmodel - Docker (for production deployment)
- SearXNG (optional, for web search)
Documentation
CLAUDE.md- Agent development guidelines (repo-wide)webber-api/docs/COVERAGE.md- Feature coverage and roadmapwebber-api/docs/architecture.md- System architecturewebber-cli/README.md- CLI usage guide
License
MIT
Releases
6
API Release v1.2.0
Latest
Languages
Python
97%
Shell
2%
Makefile
0.9%
Dockerfile
0.1%