Get Almanac running in under 5 minutes and execute your first query.
- Node.js >= 24.0.0
- pnpm >= 8.0.0
- Docker Desktop (or Docker Engine + Docker Compose)
Clone and start Almanac with a single command:
# Clone the repository
git clone https://github.com/tryprotege/almanac.git
cd almanac
# Install dependencies
pnpm install
# Start everything (Docker databases + local dev servers)
pnpm startThis command will:
- ✅ Start database services in Docker (MongoDB, Redis, Qdrant, Memgraph)
- ✅ Start the backend server locally (port 3000)
- ✅ Start the frontend UI locally (port 5173)
- Open the UI: Navigate to http://localhost:5173
- Complete Setup Wizard: On first launch, you'll see a setup screen
- Add Your LLM API Key:
- Provider: OpenAI, Anthropic, or custom endpoint
- API Key: Your LLM provider key
- Models: Select chat, embedding, and extraction models
- Save and Restart: Click "Save Configuration" and restart the server
Let's connect Slack as an example:
- Go to Data Sources page in the UI
- Click "Add Source"
- Select Slack from the marketplace
- Click "Connect with OAuth"
- Authorize Almanac in your Slack workspace
Almanac will automatically:
- Discover available Slack tools (channels, messages, users)
- Classify tools as read/write/search
- Generate an indexing configuration
- Show you a preview of the config
Click "Save Configuration" to proceed.
- Go to Sync page
- Click "Start Sync" for Slack
- Watch as Almanac fetches your Slack data
📥 Syncing Slack...
├─ Fetched 150 channels
├─ Fetched 1,247 messages
└─ ✅ Sync complete (2.3s)
After syncing, Almanac will automatically start indexing:
🔄 Vector indexing...
└─ ✅ 1,247 documents indexed (5.2s)
🔄 Graph indexing...
├─ Extracted 423 entities
├─ Found 891 relationships
└─ ✅ Graph complete (12.4s)
Now you can query your Slack data! Try this in your terminal:
curl http://localhost:3000/api/query \
-H "Content-Type: application/json" \
-d '{
"query": "What did the team discuss about the API refactor?",
"mode": "mix",
"top_k": 5
}'Or use the UI:
- Go to Query page
- Enter your question: "What did the team discuss about the API refactor?"
- Select mode: Mix (recommended)
- Click Search
{
"results": [
{
"source": "slack",
"recordType": "message",
"score": 0.89,
"rawData": {
"text": "We should split the API into microservices...",
"user": "alice",
"channel": "engineering",
"timestamp": "2024-01-10T14:30:00Z"
}
}
],
"processingTime": 234,
"mode": "mix"
}- score: Relevance score (0-1)
- source: Which data source this came from
- recordType: Type of record (message, document, issue, etc.)
- rawData: The actual data from your source
Almanac offers 5 query modes for different use cases:
Best for: Quick keyword searches
curl http://localhost:3000/api/query \
-H "Content-Type: application/json" \
-d '{"query": "API refactor", "mode": "naive"}'Best for: Finding information about specific people, projects, or concepts
curl http://localhost:3000/api/query \
-H "Content-Type: application/json" \
-d '{"query": "What is Alice working on?", "mode": "local"}'Best for: Understanding connections and workflows
curl http://localhost:3000/api/query \
-H "Content-Type: application/json" \
-d '{"query": "How does the authentication system connect to billing?", "mode": "global"}'Best for: Complex questions requiring both entities and relationships
curl http://localhost:3000/api/query \
-H "Content-Type: application/json" \
-d '{"query": "What blockers does the frontend team have?", "mode": "hybrid"}'Best for: When you want the most accurate results (combines all modes + reranking)
curl http://localhost:3000/api/query \
-H "Content-Type: application/json" \
-d '{"query": "What did we discuss about the API refactor?", "mode": "mix"}'You now have Almanac running with real data! Here's what to explore next:
- Add More Data Sources - Connect GitHub, Notion, or build custom integrations
- Understand Query Modes - Deep dive into when to use each mode
- See Examples - Real-world use cases and tutorials
- Learn LightRAG - Understand how the retrieval system works
# Check if ports are in use
lsof -i :3000 # Backend
lsof -i :5173 # Frontend
lsof -i :27017 # MongoDB
# Or use different ports
PORT=3001 pnpm devDelete the .env file and restart:
rm packages/server/.env
pnpm startCheck that your OAuth redirect URI matches:
Expected: http://localhost:3000/api/oauth/callback
See Configuration Guide for more details.
- 📖 Installation Guide - Production deployment and advanced setup
- ⚙️ Configuration - Environment variables and tuning
- 🎯 Examples - Real-world use cases
