AI-powered developer observability and knowledge platform
Watchtower watches not just code, but your workflows, pipelines, and logs. It generates AI-powered, real-time, structured documentation that acts as a project's memory and guide — reducing friction, improving onboarding, and surfacing actionable insights across the entire development lifecycle.
- File Watching - Real-time monitoring of code changes
- Vector Search - Semantic search across your codebase using embeddings
- AI Summarization - Automatic summaries for commits, PRs, and logs
- Log Analysis - Parse and analyze structured logs with filtering
- Documentation Generation - Auto-generate docs from Git history
- Key Points Extraction - Extract important insights from text
- RESTful API - FastAPI backend with automatic OpenAPI docs
Watchtower is a monorepo with the following structure:
watchtower/
├── apps/
│ ├── backend/ # Python FastAPI backend
│ ├── cli/ # TypeScript CLI tool
│ └── web/ # Next.js web interface (coming soon)
├── packages/ # Shared packages and utilities
├── infra/ # Docker Compose and deployment configs
└── scripts/ # Build and automation scripts
- Docker & Docker Compose
- Node.js 18+ (for CLI)
- Python 3.10+ (for backend development)
- Git
# Start backend and Qdrant
cd infra
docker compose up backend qdrant
# Backend: http://localhost:8000
# API docs: http://localhost:8000/docs
# Qdrant: http://localhost:6333# Install CLI dependencies
cd apps/cli
npm install
npm run build
# Watch a repository
npm start watch ./my-project
# Generate documentation
npm start docs ./CHANGELOG.md
# View all commands
npm start helpPython FastAPI backend with vector search, AI summarization, and log analysis.
Key Features:
- Vector storage (Qdrant + SQLite fallback)
- OpenAI embeddings + deterministic fallback
- Log parsing (ISO8601, bracketed, plain text)
- Text summarization with extractive fallback
- Key points extraction
API Endpoints:
POST /summarize- Summarize textPOST /embed- Generate embeddingsPOST /index- Index documentsPOST /search- Semantic searchGET /documents- List indexed documentsPOST /logs/parse- Parse and analyze logsPOST /analyze/keypoints- Extract key points
See apps/backend/README.md for details.
TypeScript command-line tool for file watching, Git integration, and documentation generation.
Commands:
watch <repo>- Monitor repository changescommits [count]- List recent commitspr <number>- Summarize pull requestdocs [output]- Generate documentationbulk <repo>- Bulk index repositorysummary <source>- Summarize text or file
See apps/cli/README.md for details.
| Variable | Default | Description |
|---|---|---|
VECTOR_DB_PATH |
./vector_store.db |
SQLite database path |
QDRANT_URL |
- | Qdrant server URL |
QDRANT_API_KEY |
- | Optional Qdrant API key |
OPENAI_API_KEY |
- | OpenAI API key |
OPENAI_MODEL |
gpt-3.5-turbo |
OpenAI model |
VECTOR_DIM |
1536 |
Embedding dimension |
| Variable | Default | Description |
|---|---|---|
WATCHTOWER_BACKEND_URL |
http://localhost:8000 |
Backend URL |
BACKEND_URL |
http://localhost:8000 |
Alternative backend URL |
cd apps/backend
# Create virtualenv
python3 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run with live reload
uvicorn app.main:app --reload
# Run tests
PYTHONPATH=. pytest -vcd apps/cli
# Install dependencies
npm install
# Run in dev mode
npm run dev watch ./my-project
# Build TypeScript
npm run build
# Run built version
npm start watch ./my-projectcd apps/backend
PYTHONPATH=. pytest -v
# With coverage
PYTHONPATH=. pytest --cov=app tests/Tests include:
- Vector search and indexing (3 tests)
- Log parsing and summarization (8 tests)
# Start services
cd infra
docker compose up backend qdrant
# Index sample content
curl -X POST http://localhost:8000/index \
-H 'Content-Type: application/json' \
-d '{"texts":["Python is great"],"sources":["doc1.txt"]}'
# Search
curl -X POST http://localhost:8000/search \
-H 'Content-Type: application/json' \
-d '{"query":"programming","top_k":5}'# Watch repo and generate docs periodically
watchtower watch ./my-project &
watchtower docs ./docs/CHANGELOG.md# Parse logs from file
watchtower summary ./app.log
# Or via API
curl -X POST http://localhost:8000/logs/parse \
-H 'Content-Type: application/json' \
-d '{"text":"2026-01-12T10:30:45Z ERROR Connection failed"}'# Index entire repository
watchtower bulk ./my-project
# Search via API
curl -X POST http://localhost:8000/search \
-H 'Content-Type: application/json' \
-d '{"query":"authentication implementation","top_k":5}'The project includes Docker Compose configuration for:
- backend - FastAPI application with uvicorn --reload
- qdrant - Vector database (optional, falls back to SQLite)
- web - Next.js web interface (coming soon)
# Start all services
docker compose up
# Start specific services
docker compose up backend qdrant
# View logs
docker compose logs -f backend- CLI file watcher
- Vector search and indexing
- AI summarization
- Log parsing
- Git integration
- Documentation generation
- Web UI with Next.js
- Timeline view of changes
- Advanced search filters
- GitHub/GitLab CI integration
- Slack notifications
- Multi-project aggregation
- Team dashboards
- Predictive insights
- Anomaly detection
- Collaboration features
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests
- Submit a pull request
See LICENSE file for details.
- Documentation: See component READMEs
- Issues: GitHub Issues
- API Docs: http://localhost:8000/docs (when running)