Codebase intelligence for AI and humans: code health scores, auto-generated docs, git analytics, dead code detection, and architectural decisions via MCP.
docker pull repowise-dev/repowise
docker run -d --name repowise -p 7337:7337 --restart always repowise-dev/repowise:latest
podman run -d --name repowise -p 7337:7337 --restart always repowise-dev/repowise:latest
skopeo inspect docker://docker.io/repowise-dev/repowise:latest
oras pull repowise-dev/repowise:latest
docker compose up -d
services:
repowise:
build:
context: ..
dockerfile: docker/Dockerfile
ports:
- "127.0.0.1:7337:7337" # API โ loopback only by default
- "127.0.0.1:3000:3000" # Web UI โ loopback only by default
volumes:
# Mount the .repowise directory from your indexed repo
- ${REPOWISE_DATA:-./data}:/data
# Mount repo directory as read-only to prevent write-based attacks
- type: bind
source: ${REPO_PATH:?Set REPO_PATH to your repository directory}
target: /repos
read_only: true
environment:
- REPOWISE_DB_URL=sqlite+aiosqlite:////data/wiki.db
- REPOWISE_EMBEDDER=${REPOWISE_EMBEDDER:-mock}
- REPOWISE_HOST=0.0.0.0
# SECURITY: Set this to enable API authentication (required for non-loopback)
- REPOWISE_API_KEY=${REPOWISE_API_KEY:?Set REPOWISE_API_KEY for Docker deployments}
# Set your LLM provider API key
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
- GEMINI_API_KEY=${GEMINI_API_KEY:-}
restart: unless-stopped