Ancient knowledge keeper for modern code
Semantic search with 98% token reduction for AI assistants.
# 1. Clone and install
git clone <repo-url>
cd th0th
bun install
# 2. Setup (100% offline with Ollama)
./scripts/setup-local-first.sh
# 3. Build and start
bun run build
bun run start:apiVerify: curl http://localhost:3333/health
File: ~/.config/opencode/opencode.json
Via MCP package:
{
"mcpServers": {
"th0th": {
"type": "local",
"command": ["bunx", "@th0th-ai/mcp-client"],
"env": {
"TH0TH_API_URL": "http://localhost:3333"
},
"enabled": true
}
}
}Via Plugin:
{
"plugin": ["@th0th/opencode-plugin"]
}From source (development):
{
"mcpServers": {
"th0th": {
"type": "local",
"command": ["bun", "run", "/path/to/th0th/apps/mcp-client/src/index.ts"],
"enabled": true
}
}
}Create .vscode/mcp.json in your workspace:
{
"servers": {
"th0th": {
"command": "bunx",
"args": ["@th0th-ai/mcp-client"],
"env": {
"TH0TH_API_URL": "http://localhost:3333"
}
}
}
}Or run ./scripts/setup-vscode.sh for automatic configuration.
{
"mcpServers": {
"th0th": {
"type": "local",
"command": ["docker", "compose", "run", "--rm", "-i", "mcp"],
"enabled": true
}
}
}| Tool | Description |
|---|---|
th0th_index |
Index a project directory for semantic search |
th0th_search |
Semantic + keyword search with filters |
th0th_remember |
Store important information in persistent memory |
th0th_recall |
Search stored memories from previous sessions |
th0th_compress |
Compress context (keeps structure, removes details) |
th0th_optimized_context |
Search + compress in one call (max token efficiency) |
th0th_analytics |
Usage patterns, cache performance, metrics |
# Development
bun run dev:api
# Production
bun run start:apiSwagger docs: http://localhost:3333/swagger
# Index a project
curl -X POST http://localhost:3333/api/v1/project/index \
-H "Content-Type: application/json" \
-d '{"projectPath": "/home/user/my-project", "projectId": "my-project"}'
# Search
curl -X POST http://localhost:3333/api/v1/search/project \
-H "Content-Type: application/json" \
-d '{"query": "authentication", "projectId": "my-project"}'
# Store memory
curl -X POST http://localhost:3333/api/v1/memory/store \
-H "Content-Type: application/json" \
-d '{"content": "Important decision...", "type": "decision"}'
# Compress context
curl -X POST http://localhost:3333/api/v1/context/compress \
-H "Content-Type: application/json" \
-d '{"content": "...", "strategy": "code_structure"}'Config file: ~/.config/th0th/config.json (auto-created on first run)
| Provider | Model | Cost | Quality |
|---|---|---|---|
| Ollama (default) | nomic-embed-text, bge-m3 | Free | Good |
| Mistral | mistral-embed, codestral-embed | $$ | Great |
| OpenAI | text-embedding-3-small | $$ | Great |
npx th0th-config init # Ollama (default)
npx th0th-config init --mistral your-api-key # Mistral
npx th0th-config init --openai your-api-key # OpenAI
npx th0th-config show # Show current config| Command | Description |
|---|---|
bun run build |
Build all packages |
bun run dev |
Development (all apps) |
bun run dev:api |
REST API with hot reload |
bun run dev:mcp |
MCP server with watch |
bun run start:api |
Start REST API |
bun run start:mcp |
Start MCP server |
bun run test |
Run tests |
bun run lint |
Lint code |
bun run type-check |
Type checking |
th0th/
βββ apps/
β βββ mcp-client/ # MCP Server (stdio)
β βββ tools-api/ # REST API (port 3333)
β βββ opencode-plugin/ # OpenCode plugin
βββ packages/
β βββ core/ # Business logic, search, embeddings, compression
β βββ shared/ # Shared types & utilities
βββ scripts/
| Component | Description |
|---|---|
| Semantic Search | Hybrid vector + keyword with RRF ranking |
| Embeddings | Ollama (local) or Mistral/OpenAI API |
| Compression | Rule-based code structure extraction (70-98% reduction) |
| Memory | Persistent SQLite storage across sessions |
| Cache | Multi-level L1/L2 with TTL |
MIT
