One command to connect: docker run -it --rm --network your-ai-network local/basecamp

The Problem


You've got local AI services running — Ollama, maybe TabbyAPI or vLLM, maybe SearXNG. They work. But to actually use them together, you're either:

Nothing ties your stack together. Until now.

What Basecamp Does Auto-Discovery


Basecamp is a Docker image containing Hermes Agent + Ollama. When you run it on a Docker network, it:

The Connect Screen


First run, basecamp scans your network and shows you what it found:

============================================================ BASECAMP — AI Agent + Local Inference Connect Screen ============================================================ Discovered 5 service(s): [ 0] LLM Ollama (GGUF inference) [1 model(s)] -> http://ollama:11434 [ 1] EXL TabbyAPI / OpenAI-compatible (EXL3/EXL2) [1 model(s)] [needs auth] -> http://tabbyapi:5000 [ 2] SRC SearXNG (private search) -> http://searxng:8080 [ 3] MCP MCPO (MCP OpenAPI proxy) -> http://mcpo:8000 [ 4] UI Open WebUI (LLM workspace) -> http://open-webui:8080 PRIMARY inference engine: 1. Ollama (GGUF inference) (http://ollama:11434) 2. TabbyAPI / OpenAI-compatible (http://tabbyapi:5000) 0. Use basecamp's own Ollama Choice [1]: 2 TabbyAPI requires authentication (bearer). Enter API key (or press Enter to skip): your-key-here Save and continue? [Y/n]: Y

Subsequent runs skip this — config is saved to a persistent volume. Run tavern rediscover to re-scan.

Quick Start


# Pull the image (Docker Hub) docker pull jpanasuk/basecamp:1.0.3 # Run against your AI network docker run -it --rm \ --network your-ai-network \ --gpus all \ -v basecamp-ollama:/root/.ollama \ -v basecamp-hermes:/root/.hermes \ jpanasuk/basecamp:1.0.3 # First run: connect screen appears # Pick services, enter API keys if needed # Then you're in Hermes Agent with tavern CLI tavern status # show connected services tavern chat "hello" # chat with EXL3 model (streaming) tavern search "AI news" # search via SearXNG tavern mcp # list MCP tools tavern models # list available models

What It Discovers


LLMOllama
GGUF inference
Auto-discovered, no auth
EXLTabbyAPI
EXL3/EXL2 inferenceneeds API key
Prompted during connect
LLMvLLM
High-throughput inference
Auto-discovered, no auth
PXYLiteLLM
Multi-provider proxyneeds API key
Prompted during connect
LLMLocalAI
OpenAI replacement
Auto-discovered, no auth
LLMllama.cpp
Lightweight server
Auto-discovered, no auth
SRCSearXNG
Private metasearch
Auto-discovered, no auth
MCPMCPO
MCP OpenAPI proxyneeds API key
Prompted during connect
UIOpen WebUI
LLM workspace
Auto-discovered, no auth
CHTSillyTavern
Character chatneeds basic auth
Tries default, prompts if fails

Why It's Different


Feature Other tools Basecamp
Service discovery Manual config Auto-discover
API keys Hardcoded in config Prompted at connect
Works with any stack Tied to one app Stack-agnostic
Agent included BYO agent Hermes Agent built-in
Streaming chat Usually no Yes, by default
Re-scan after changes Edit config again tavern rediscover
Secrets in image Often yes Zero hardcoded keys

Architecture


┌─────────────────────────────────────────────┐ │ basecamp container │ ┌───────────┐ ┌──────────────────────┐ │ Ollama │ │ Hermes Agent │ │ (GGUF) │ │ (CLI AI assistant) │ └───────────┘ └──────────────────────┘ ┌──────────────────────────────────────┐ │ discover.py │ │ - scans network for AI services │ │ - connect screen TUI │ │ - generates tavern CLI dynamically │ └──────────────────────────────────────┘ ┌──────────────────────────────────────┐ │ tavern (auto-generated) │ │ - chat, search, mcp, models, status │ │ - streaming responses │ │ - rediscover on demand │ └──────────────────────────────────────┘ └─────────────────────────────────────────────┘ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ TabbyAPI │ │ Ollama │ │ SearXNG │ │ (EXL3) │ │ (GGUF) │ │ (search) │ └──────────┘ └──────────┘ └──────────┘ ┌──────────┐ ┌──────────┐ │ MCPO │ │Open WebUI│ │ (tools) │ │ (UI) │ └──────────┘ └──────────┘

Related Projects