jpmschweitzerandClaude Fable 5 1769ec2803 feat(backend): adapt every completion to the detected backend (workspace T-137)
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>
2026-09-13 10:02:14 +02:00
2026-01-15 07:54:33 +01:00
2026-01-15 07:54:33 +01:00

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 deployment
  • cli/v0.1.0 - Triggers CLI installer build (future)

Requirements

  • Python 3.12+
  • Ollama running with gemma4:e2b model
  • 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 roadmap
  • webber-api/docs/architecture.md - System architecture
  • webber-cli/README.md - CLI usage guide

License

MIT

S
Description
Mrs. Webber
Readme
543 KiB
2026-09-13 10:03:14 +02:00
Languages
Python 97%
Shell 2%
Makefile 0.9%
Dockerfile 0.1%