Skip to content

boblabs-eu/boblabs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

15 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bob Labs

The full-stack AI agent platform your infrastructure was missing.

Multi-agent labs Β· 40 sandboxed tools Β· private RAG Β· GPU dispatcher Β· enterprise auth β€” all on your servers, in two commands.

License: Apache 2.0 Self-hosted Built with Docker Python 3.12 React 18 PostgreSQL 16 Status

Get started Β· Live tour Β· Docs Β· Why Bob Labs

Bob Labs dashboard


What is this

Bob Labs runs persistent multi-agent workspaces on your own servers. Each Lab is a sandboxed working directory where an Orchestrator coordinates specialist Agents through a shared event bus, calling 40 built-in tools, ingesting private RAG, dispatching GPU jobs, and writing artifacts back to disk. Pause it, resume it, schedule it, ship it as JSON.

It's the missing layer between a chat UI and your infrastructure:

  • Multi-agent without a SaaS: Orchestrator + N agents, each with their own model, prompt, memory, and tool grants. They talk through a typed message bus, not through your prompts.
  • Sandboxed by default: every code/shell call runs in a per-Lab container with command allow-lists and resource caps. The agent can't curl evil.com unless you said it could.
  • Total privacy: PostgreSQL, Qdrant, Ollama/vLLM β€” all on your hardware. No third-party tokens leak through, ever.
  • Full infra handling for self-hosted models: a GPU dispatcher auto-discovers your fleet (1 to N machines), routes models to the right card, hot-swaps loads, and gives you a live load-balancer feed.
  • Enterprise grade: JWT auth, role-based access, per-lab ACL (owner/editors/viewers), admin panel, audit logs, time-limited access tokens.

If you've ever tried to give an LLM access to your stack and walked away cold, this is the thing.


A tour of the platform

Lab Dashboard
Servers, GPUs, projects, RAG, news β€” one screen.
Dashboard
Orchestrator + Live Activity Feed
Chat, agent picker, model router, real-time event stream.
Orchestrator
Private RAG
Qdrant + LightRAG. Per-collection access control. PDF/MD/HTML ingest.
RAG
Inside a Lab
Orchestrator + N agents, shared timeline, live message bus, per-agent state.
Lab

Why Bob Labs

LangChain Apps Open WebUI Bob Labs
Self-hosted, no SaaS calls depends on tools yes yes
Multi-agent orchestration glue code no first-class
Persistent labs (pause/resume/schedule) no no yes
Sandboxed code/shell execution bring-your-own no per-lab containers
Built-in tools (no plugin install) bring-your-own partial 40 in the box
GPU dispatcher across N hosts no no yes
Private RAG (Qdrant + LightRAG) bring-your-own partial yes
Per-resource ACL (owner/editors/viewers) no partial yes
Two-command deploy no yes yes
Open source varies yes Apache 2.0

Quick start

git clone https://github.com/boblabs-eu/boblabs.git
cd bob-manager
cp .env.example .env          # fill JWT_SECRET, ADMIN_SECRET, ADMIN_EMAIL
docker compose up -d --build

That's it.

Service URL
Dashboard http://localhost:3000
API + Swagger http://localhost:8888/docs

Need GPU services on a remote box? cd agent && sudo bash install.sh on each GPU host. The agent auto-registers and starts streaming metrics back. No Kubernetes. No SaaS. No waiting list.

Production-grade hardening (TLS, secrets management, hardened compose) is documented in INSTALL_PROD.md.


What's inside

πŸ§ͺ Multi-agent Labs

Persistent workspaces with an Orchestrator + N Agents. Each agent has its own system prompt, model, memory, and tool grants. Pause-resume-stop. Pluggable loop strategies (Plan-Execute, Critique-Refine, Round-Robin, custom). Anti-loop detector catches semantic and tool-call repetition. Import/export labs as versionable JSON. LABS.md

πŸ› οΈ 40 sandboxed tools

Auto-discovered from tool_*.py. Code (python_exec, shell_exec), files (file_read, file_write), web (web_search, web_extract, browser_navigate, browser_snapshot, excalidraw, mermaid_to_img), media (image_generate, audio_generate, video_generate, audio_mix, media_pipeline, comfyui), comms (mail, twitter, media_post, postiz), data (youtube, gouv_data_fr, blockchain, defi_data, web3_portfolio, trading, trustless_otc), database (db_query, db_execute, db_schema), RAG (rag_search, rag_ingest, rag_list_collections), memory (memory_save, memory_search, handle_memory), reasoning (think), ops (control_server, clock, call_agent). All sandboxed, all auditable. TOOLS_AND_SANDBOX.md

πŸ”’ Private RAG

Qdrant for vectors + LightRAG for graph-enhanced retrieval. Per-collection access control. Ingest PDF, Markdown, HTML, plain text, web URLs. Query in local, global, or hybrid mode. The agent gets a tool, you keep the data. RAG.md Β· LIGHTRAG.md

⚑ GPU dispatcher across N hosts

Auto-discovers agents, routes inference to the least-loaded provider, retries on failure, hot-swaps Ollama models without dropping requests. Live load-balancer feed shows every dispatch in real time. DISPATCHER_AND_MODEL_ROUTING.md

🎨 Self-hosted media generation

Nine GPU microservices, each in its own compose file, mix and match per host:

Service What Default port
MusicGen Text β†’ music (small/medium/large/melody) 3014
Bark TTS, singing 3015
RVC Voice conversion 3016
CoquiTTS TTS + voice cloning (XTTS v2) 3017
STT Speech-to-text (Whisper) 7865
LTX-Video Text/image β†’ video (LTX-2.3, 22B DiT) 3018
Wan-Video Text/image β†’ video (Wan 2.2, 5B) 3019
Remotion React β†’ MP4 programmatic video 3020
ComfyUI bridge SDXL / Flux / SD3 workflows varies

GPU_SERVICES.md Β· MUSIC_PIPELINES.md

πŸ›‘οΈ Enterprise auth & admin

JWT tokens (1-day default). Role-based access (admin / user). Per-resource ACL on labs, projects, RAG collections, wallets β€” {owner, editors, viewers} keyed by email, enforced in SQL. Time-limited access tokens managed from an admin panel β€” invite users by email, revoke with one click. Full audit log of every request. ACCESS_CONTROL.md

πŸ”Œ Any model, any provider

First-class adapters for Ollama, vLLM, HuggingFace, OpenAI, Anthropic, xAI, Groq, DeepSeek, plus a Claude CLI sidecar that lets a Claude Max subscription drive a lab through Claude Code's -p mode (OpenAI-compatible /v1 endpoints, models namespaced claude-cli:*). Mix local + API in the same lab; the dispatcher fails over automatically. DISPATCHER_AND_MODEL_ROUTING.md Β· CLAUDE_CLI.md

πŸ€– Real agents, not just models

Two agent backends: native (Bob orchestrates a chosen model directly) or Hermes (Nous Research's hermes-agent, running in a per-agent container with its own persistent memory volume + tool layer). Switch live from the agent edit dialog. AGENTS_AND_ORCHESTRATION.md

πŸ“‘ Real-time event bus

Every agent decision, tool call, and inter-agent message is broadcast over a WebSocket. Plug it into a dashboard, a CLI, a Discord bot β€” it's just JSON.

πŸͺ™ Web3 lane

Wallet tracking, portfolio history, on-chain queries (EVM + Solana via Blockscout), DeFi data (CoinGecko / DeFiLlama / DEX Screener), an agent-callable trading tool with policy guards, and a TrustlessOTC P2P bridge. WEB3_TOOL.md

🧰 Operations toolbelt

Server fleet management, real-time CPU/RAM/GPU/disk/network metrics, remote command execution, multi-step YAML workflows, project tracking, resource library, news/RSS aggregation, blog publisher.


How a Lab actually runs

   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚                    Lab : "Daily research brief"                β”‚
   β”‚                                                                β”‚
   β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    plan      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”‚
   β”‚   β”‚ Orchestrator│─────────────▢│  Agent A   β”‚ web_search       β”‚
   β”‚   β”‚ (qwen 14B)  β”‚              β”‚ Researcher β”‚ web_extract      β”‚
   β”‚   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜              β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ rag_search       β”‚
   β”‚          β”‚                           β”‚                         β”‚
   β”‚          β”‚   results               β”Œβ”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”                β”‚
   β”‚          β–Ό                         β”‚  Agent B β”‚ python_exec    β”‚
   β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”‚ Analyst  β”‚ file_write     β”‚
   β”‚   β”‚  shared     β”‚β—€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                β”‚
   β”‚   β”‚  workspace  β”‚      memory + artifacts                      β”‚
   β”‚   β”‚  /data/lab/ β”‚                                              β”‚
   β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                              β”‚
   β”‚                                                                β”‚
   β”‚  β—‰ event bus  β—‰ pause/resume  β—‰ ACL  β—‰ JSON export             β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            β–Ό                 β–Ό                  β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚ bob-api β”‚      β”‚ Sandbox  β”‚       β”‚ GPU host β”‚
       β”‚ (FastAPI)β”‚     β”‚ containerβ”‚       β”‚ (Ollama, β”‚
       β”‚         β”‚      β”‚ per-lab  β”‚       β”‚  vLLM,…) β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The Orchestrator owns the loop. Agents are stateless turn-takers. The workspace is where artifacts land. Tool calls are the only side effects, and they're all gated.

ARCHITECTURE.md for the full picture (database schema, websocket protocol, agent execution model).


Use cases (real labs people run)

  • Daily research brief β€” Orchestrator dispatches three specialist desks (competitive, market signals, customer voice) in parallel; an Editor agent writes the final HTML/MD digest.
  • Code-base archaeologist β€” Ingest a repo into RAG, ask questions, generate refactoring plans, write the patches.
  • Crypto desk β€” Watch wallets, evaluate predictions, draft trades β€” with read-only or signed-tx tool grants.
  • Voice/video pipeline β€” One Lab takes a topic, drafts a script, generates audio (Bark), generates a video (Wan-Video), uploads to YouTube.
  • Internal tools backend β€” Build a private app on top of bob-api; consumer apps register via the admin panel and call bob-api with HMAC-signed requests.

Lab definitions are versioned JSON in templates/lab_examples/. Drop one in, hit run.


Documentation map

35 docs, ~12k lines. Auto-tested smoke gate documented at TOOL_TEST_REPORT.md.

Get oriented GENERAL_OVERVIEW Β· ARCHITECTURE Β· QUICK_LAUNCH
Build a lab LABS Β· AGENTS_AND_ORCHESTRATION Β· PROMPT_STRUCTURE Β· ANTI_LOOP
Tools & sandbox TOOLS_AND_SANDBOX Β· WEB3_TOOL
RAG RAG Β· LIGHTRAG
Models & GPUs DISPATCHER_AND_MODEL_ROUTING Β· GPU_SERVICES Β· MUSIC_PIPELINES
Auth & ops ACCESS_CONTROL Β· API_REFERENCE Β· SCHEDULING_AND_CRON
Run it in prod INSTALL_PROD Β· CONFIGURATION Β· AGENT Β· CONSUMER_APPS

Stack

Layer Choice
API FastAPI Β· Python 3.12 Β· SQLAlchemy 2 (async) Β· Pydantic v2
DB PostgreSQL 16 Β· JSONB ACL columns Β· single-file schema (init.sql)
Vectors Qdrant 1.12 Β· LightRAG (graph-enhanced)
UI React 18 Β· React Router v6 Β· Recharts Β· WebSocket
GPU services PyTorch Β· CUDA 12.1 Β· AudioCraft Β· Bark Β· XTTS Β· Whisper Β· Remotion Β· LTX-Video Β· Wan-Video
Models Ollama Β· vLLM Β· HuggingFace Β· OpenAI Β· Anthropic Β· xAI Β· Groq Β· DeepSeek
Auth JWT (HS256) Β· per-resource ACL Β· admin-managed access tokens
Ops Docker Compose Β· structured request log Β· admin observability dashboard

Project layout

bob-manager/
β”œβ”€β”€ control-plane/    FastAPI backend (api, services, models, repos, websocket, engine)
β”œβ”€β”€ agent/            Python agent for GPU servers (collectors, inspectors, executor, ws)
β”œβ”€β”€ frontend/         React 18 SPA (pages, components, services)
β”œβ”€β”€ sandbox/          Per-lab isolated execution container
β”œβ”€β”€ remotion-api/     React β†’ MP4 video rendering service
β”œβ”€β”€ script-runner/    GPU script discovery & execution
β”œβ”€β”€ gpu-services/     Standalone GPU microservices (musicgen, bark, rvc, coqui-tts, stt, ltx-video, wan-video)
β”œβ”€β”€ templates/        Agent presets + lab blueprint examples (JSON)
β”œβ”€β”€ scripts/          Tooling (smoke tests, deep tests, publish)
└── docs/             35 docs, ~12k lines

Status

  • βœ… All 40 built-in tools pass the smoke gate. See TOOL_TEST_REPORT.md.
  • βœ… Two-command deploy from a fresh clone.
  • βœ… Used in production by the maintainers (this is real software, not a slide deck).
  • πŸ§ͺ Public release fresh out the door β€” please file issues, even small ones. Some features still in development.

License

Apache License 2.0 β€” use it, fork it, ship it. See NOTICE for attribution and CITATIONS.md for upstream model and library credits.

Third-party components (LightRAG, Qdrant, Ollama, vLLM, ComfyUI, Remotion, Bark, XTTS, MusicGen, RVC, LTX-Video, Wan-Video, Riffusion, …) keep their own licenses.


Built by people tired of pasting API keys into web forms.
Star if this saved you a weekend.

About

Self-hosted multi-agent AI platform. Persistent labs, 40 sandboxed tools (code, web, RAG, GPU dispatcher, web3), private Qdrant + LightRAG, sandboxed code execution per lab, anti-loop detection, Ollama/vLLM/OpenAI/Anthropic adapters. Two-command Docker deploy. Apache 2.0.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors