Quick Start Guide
BAMBOO: Bolstered Assistance for Managing and Building Operations and Oversight
This guide will help you get started with Bamboo quickly.
Prerequisites
Section titled “Prerequisites”- Python 3.10 or higher
- Docker and Docker Compose (for local databases)
- LLM API key (unless local LLM is used) — OpenAI, Anthropic, Gemini, and Ollama
Setup Steps
Section titled “Setup Steps”1. Install the Package
Section titled “1. Install the Package”# Activate your virtual environmentsource .venv/bin/activate
# Install the packagepip install .
# For development — editable install with dev tools (pytest, black, ruff, mypy).# Use this (not the plain install above) if you intend to run the test suite;# see the Development Guide.pip install -e ".[dev]"2. Verify the Installation
Section titled “2. Verify the Installation”# Works from any directory after pip install .bamboo verifyThis checks that all modules import correctly, CLI entry points are registered, all dependencies are present, and that Python has a working CA trust store (auto-installing the bundled certifi roots into your .env if it is empty — this is what makes HTTPS, including @bamboo login, verify correctly).
bamboo verify prints the exact path to the installed .env.example. Copy it and fill in your keys:
cp <path-shown-by-bamboo-verify> .envThen edit .env. The minimum required settings depend on which LLM and embeddings backend you choose:
OpenAI Option — OpenAI for both LLM and embeddings (default, paid)
Section titled “OpenAI Option — OpenAI for both LLM and embeddings (default, paid)”LLM_API_KEY=sk-... # Your OpenAI API keyLLM_PROVIDER=openaiLLM_MODEL=gpt-4-turbo-previewEMBEDDINGS_PROVIDER=openai # default — reuses LLM_API_KEY automaticallyEMBEDDING_MODEL=text-embedding-3-smallEMBEDDING_DIMENSION=1536Hybrid Option — Anthropic LLM + OpenAI embeddings (both paid)
Section titled “Hybrid Option — Anthropic LLM + OpenAI embeddings (both paid)”Note:
LLM_PROVIDER=anthropicrequires a Claude API subscription (api.anthropic.com), not a claude.ai consumer subscription — they are separate products with separate billing.
LLM_API_KEY=sk-ant-... # Your Anthropic API keyLLM_PROVIDER=anthropicLLM_MODEL=claude-sonnet-4-6EMBEDDINGS_PROVIDER=openai # Anthropic has no embeddings APIEMBEDDINGS_API_KEY=sk-... # Separate OpenAI key for embeddingsEMBEDDING_MODEL=text-embedding-3-smallEMBEDDING_DIMENSION=1536Free Option — Fully free: Ollama (local LLM) + local embeddings
Section titled “Free Option — Fully free: Ollama (local LLM) + local embeddings”No API keys required at all.
# 1. Install Ollama: https://ollama.com# 2. Pull a model (one-time download, ~2-8GB depending on model)ollama pull qwen3.6# 3. Keep the server running in a separate terminalollama serve# 4. Install the extra dependencies for local LLM and Ollamapip install langchain-ollama sentence-transformers langchain-huggingface# Install the extra dependencies for local embeddingspip install sentence-transformers langchain-huggingfaceLLM_PROVIDER=ollamaLLM_MODEL=qwen3.6 # or mistral, gemma3, etc.EMBEDDINGS_PROVIDER=local # runs sentence-transformers in-process, no API keyEMBEDDING_MODEL=all-MiniLM-L6-v2 # fast (384-dim); or all-mpnet-base-v2 (768-dim)EMBEDDING_DIMENSION=384 # must match EMBEDDING_MODEL# Optional but recommended: avoids HuggingFace Hub rate-limiting on model downloads.# Get a free token at https://huggingface.co/settings/tokensHF_TOKEN=Many external MCP servers? When configured MCP servers add up to hundreds of tools, the orchestration tool list is budgeted (a truncation backstop plus a relevance cap) and tunable via
LLM_CONTEXT_WINDOW/TOOL_MAX_FULL_SCHEMASand related settings. See Agent Reference → Bounding the tool list for large catalogues.
Contributing? If you are working inside the project source tree and haven’t installed yet, you can also run
python verify_installation.pyfrom the project root as a fallback.
3. Start Database Services
Section titled “3. Start Database Services”# Start graph database and vector database using Docker Composedocker-compose up -d
# Wait about 10 seconds for services to be ready# Graph database will be available at http://localhost:7474# Vector database will be available at http://localhost:6333Or use the Makefile:
make docker-up4. Test the Setup
Section titled “4. Test the Setup”bamboo interactiveUsage Examples
Section titled “Usage Examples”Example 1: Populate Knowledge Base
Section titled “Example 1: Populate Knowledge Base”bamboo populate \ --email-thread examples/sample_email.txt \ --task-data examples/sample_task.json \ --external-data examples/sample_external.jsonExample 2: Analyze a Task
Section titled “Example 2: Analyze a Task”bamboo analyze \ --task-data examples/sample_task.json \ --external-data examples/sample_external.json \ --output results.jsonExample 3: Fetching tasks from PanDA
Section titled “Example 3: Fetching tasks from PanDA”If your environment has access to a PanDA server, you can fetch task data directly instead of loading a local JSON file.
Inspect raw task data:
bamboo fetch-task 12345bamboo fetch-task 12345 --output task_12345.jsonbamboo fetch-task 12345 --verbose # sets bamboo logger to DEBUGPopulate and analyze using a live task ID:
bamboo populate --task-id 12345bamboo populate --task-id 12345 --email-thread incident.txtbamboo analyze --task-id 12345bamboo analyze --task-id 12345 --output result.json--task-id and --task-data are mutually exclusive on both commands.
See docs/PANDA_INTEGRATION.md for server configuration and authentication setup.
Example 4: Interactive Mode
Section titled “Example 4: Interactive Mode”bamboo interactiveThe interactive mode provides:
- Knowledge base population wizard
- Task analysis wizard
- Knowledge graph querying
- Human-in-the-loop review
Troubleshooting
Section titled “Troubleshooting”Database Connection Issues
Section titled “Database Connection Issues”# Check if databases are runningdocker ps
# Check graph database logsdocker logs bamboo-neo4j-1
# Check vector database logsdocker logs bamboo-qdrant-1API Key Issues
Section titled “API Key Issues”# Check which keys are set in your .envgrep API_KEY .env
# Check which provider and model are configuredpython -c "from bamboo.config import get_settingss = get_settings()print('llm_provider :', s.llm_provider)print('llm_model :', s.llm_model)print('llm_api_key :', 'set' if s.llm_api_key else 'MISSING')print('embeddings_provider :', s.embeddings_provider)print('embeddings_api_key :', 'set' if s.effective_embeddings_api_key else 'MISSING (not needed for local)')"
# Test that the LLM client can be constructed (does not make a network call)python -c "from bamboo.llm.llm_client import get_llm; print(get_llm())"Common errors:
| Error | Cause | Fix |
|---|---|---|
AuthenticationError / 401 | Wrong or missing API key | Check LLM_API_KEY (and EMBEDDINGS_API_KEY when EMBEDDINGS_PROVIDER=openai) in .env |
ValueError: llm_provider must be... | Invalid LLM_PROVIDER value | Set LLM_PROVIDER=openai, anthropic, or ollama |
llm_api_key is empty | .env not loaded | Make sure .env is in the working directory where you run Bamboo |
RateLimitError | API quota exceeded | Check your API plan or wait and retry |
ImportError: sentence-transformers | Missing local-embeddings deps | Run pip install sentence-transformers langchain-huggingface |
ImportError: langchain-ollama | Missing Ollama deps | Run pip install langchain-ollama |
| Ollama connection refused | Ollama server not running | Run ollama serve in a separate terminal |
| HuggingFace Hub rate-limit warning | HF_TOKEN not set | Add HF_TOKEN=<token> to .env — free token at https://huggingface.co/settings/tokens |
Import Errors
Section titled “Import Errors”# Reinstall the packagepip install .
# Or in editable/development modepip install -e .Learn more
Section titled “Learn more”- Architecture, agents, and MCP tool budgeting → Agent Reference
- Graph schema (node & relationship types) → Graph Schema
- Extending Bamboo (custom node types, queries, prompts), testing, and deployment → Development Guide
- Fetching tasks from PanDA → PanDA Integration
- Live human-in-the-loop investigation → Co-Investigation Mode
Next Steps
Section titled “Next Steps”- Populate your knowledge base with real email threads and task data
- Analyze problematic tasks and review the generated explanations
- Provide feedback to improve the system’s accuracy
- Customize prompts for your specific domain
- Extend the graph schema with domain-specific nodes