This guide covers all deployment modes for VisualEyes.
- Prerequisites
- Option A: Local Development
- Option B: Docker Compose
- Option C: Kubernetes (minikube)
- Option D: Kubernetes (kind)
- Option E: Production Kubernetes
- Configuration Reference
- Verifying the Installation
| Tool | Minimum Version | Required For |
|---|---|---|
| Go | 1.24 | Building from source |
| Node.js | 18 | UI development |
| Docker | 24 | Container deployment |
| Docker Compose | v2 | Full stack local |
| kubectl | 1.26 | Kubernetes deployment |
| PostgreSQL | 14 | Persistent storage (optional falls back to in-memory) |
git clone https://github.com/onkar717/visual-eyes.git
cd visual-eyes
make deps
make build
make install-uicp .env.example .envEdit .env:
# Required for AI RCA
ANTHROPIC_API_KEY=sk-ant-...
# Optional omit to use in-memory storage
DATABASE_URL=postgres://user:pass@localhost:5432/visualeyes?sslmode=disable
# Backend server address (for agents and CLI)
VISUAL_EYES_SERVER_URL=http://localhost:8080Open three terminals:
Terminal 1 Backend server:
./bin/visual-eyes-server
# Listening on :8080Terminal 2 System agent:
./bin/visual-eyes-agent
# Pushing metrics every 10sTerminal 3 UI:
make run-ui
# http://localhost:5173./bin/visual-eyes-kube-agentThe fastest way to run the full stack.
git clone https://github.com/onkar717/visual-eyes.git
cd visual-eyes
cp .env.example .env
# Set ANTHROPIC_API_KEY in .env
docker-compose up --build -dServices:
| Service | Port | Description |
|---|---|---|
| backend | 8080 | API + WebSocket |
| ui | 3000 | React dashboard |
| postgres | 5432 | Persistent storage |
| system-agent | Host metrics push |
Check logs:
docker-compose logs -f backend
docker-compose logs -f system-agentStop:
docker-compose downminikube start --driver=dockerThe agents inside the cluster need to reach the backend running on your host.
minikube ssh -- ip route | grep default | awk '{print $3}'
# Example output: 192.168.49.1./bin/visual-eyes-serverEdit deployments/kubernetes/config.yaml and set the endpoint:
data:
VISUAL_EYES_OUTPUT_REMOTE_ENDPOINT: "http://192.168.49.1:8080/api/kubernetes-metrics"Apply manifests in order:
kubectl apply -f deployments/kubernetes/rbac.yaml
kubectl apply -f deployments/kubernetes/config.yaml
kubectl apply -f deployments/kubernetes/agent.yamlVerify:
kubectl get pods -n kube-system -l app=visual-eyes-k8s-agent
kubectl logs -n kube-system -l app=visual-eyes-k8s-agent -fkind create cluster --name visual-eyes
kubectl cluster-info --context kind-visual-eyes
# Get host IP accessible from inside kind
docker inspect kind-control-plane | grep '"Gateway"'
# Use that IP in deployments/kubernetes/config.yamlThen follow the same apply steps as Option C.
make build-docker-server
make push-docker-server
make build-docker-system-agent
make push-docker-system-agentEdit deployments/kubernetes/agent.yaml to reference your registry images.
kubectl create namespace visual-eyes
kubectl create secret generic visual-eyes-secrets \
--from-literal=ANTHROPIC_API_KEY=sk-ant-... \
--from-literal=DATABASE_URL=postgres://... \
-n visual-eyeskubectl apply -f deployments/kubernetes/ -n visual-eyesAll settings can be set via configs/config.yaml or environment variables. Environment variables take precedence.
| Config Key | Env Variable | Default | Description |
|---|---|---|---|
server.port |
VISUAL_EYES_SERVER_PORT |
8080 |
Backend HTTP port |
agent.collection_interval |
VISUAL_EYES_AGENT_COLLECTION_INTERVAL |
10s |
Metrics push interval |
agent.output.remote_endpoint |
VISUAL_EYES_OUTPUT_REMOTE_ENDPOINT |
http://localhost:8080/api/system-metrics |
Backend push URL |
agent.disable_kube_metrics |
VISUAL_EYES_AGENT_DISABLE_KUBE_METRICS |
false |
Skip K8s metric collection |
agent.disable_host_metrics |
VISUAL_EYES_AGENT_DISABLE_HOST_METRICS |
false |
Skip system metric collection |
database.url |
DATABASE_URL |
PostgreSQL connection string | |
rca.anthropic_api_key |
ANTHROPIC_API_KEY |
Claude API key for RCA |
curl http://localhost:8080/health
# {"status":"ok"}curl http://localhost:8080/api/metrics/snapshot | jq .curl http://localhost:8080/metrics | grep visual_eyes./bin/veye alerts./bin/veye watch