Prerequisites
Before you begin, ensure you have:Docker & Docker Compose
Version 20.10+ with Docker Compose v2
Google Gemini API key
Free API key from Google AI Studio
No Python installation required! Everything runs in Docker containers.
Installation
Configure environment variables
Copy the example environment file and add your Gemini API key:Edit
.env and set your API key:.env
Start the system
Launch Neo4j and the EKG application:This will:
- Start Neo4j graph database on ports 7474 (web UI) and 7687 (bolt)
- Parse configuration files from the
data/directory - Build the knowledge graph
- Start the web interface at http://localhost:8000
First startup takes 1-2 minutes while Docker builds the images and Neo4j initializes.
Your first query
Now that EKG is running, let’s explore the system with natural language queries.Using the web interface
Open http://localhost:8000 in your browser and try these queries:Using the API
You can also query via the REST API:Example response
Example response
Understanding the data
EKG parsed the sample configuration files in thedata/ directory:
Docker Compose services
The system loaded 7 services fromdata/docker-compose.yml:
- Service names and types
- Dependencies from
depends_onand environment variables - Team ownership and oncall information from labels
- Port mappings and configuration
Team ownership
Fromdata/teams.yaml, EKG knows which teams own which services:
data/teams.yaml
Exploring the graph
You can visualize the knowledge graph in Neo4j Browser:Open Neo4j Browser
Example queries to try
Now that you understand the data, try these natural language queries:Ownership queries
Ownership queries
- “Who owns the payment service?”
- “What does the orders team own?”
- “Who should I page if orders-db is down?”
- “List all teams”
Dependency queries
Dependency queries
- “What does order-service depend on?”
- “What services use redis-main?”
- “What databases does the orders team manage?”
- “Show me everything that depends on auth-service”
Blast radius queries
Blast radius queries
- “What breaks if redis-main goes down?”
- “What’s the blast radius of users-db?”
- “If auth-service fails, what’s affected?”
- “What teams are impacted if payments-db fails?”
Path queries
Path queries
- “How does api-gateway connect to orders-db?”
- “What’s between order-service and notification-service?”
- “Show the path from api-gateway to redis-main”
Exploration queries
Exploration queries
- “List all services”
- “Show me all databases”
- “What teams are there?”
- “Find all cache nodes”
Adding your own data
To analyze your own infrastructure:Next steps
Architecture
Learn how connectors, storage, queries, and chat work together
API reference
Explore all available API endpoints and query methods
Custom Connectors
Build custom connectors for your infrastructure sources
Configuration
Configure environment variables and system settings
Troubleshooting
Container won't start
Container won't start
Check Docker logs:Common issues:
- Missing
GEMINI_API_KEYin.envfile - Port 8000 or 7687 already in use
- Insufficient Docker memory (Neo4j needs ~512MB)
Health check fails
Health check fails
Wait for Neo4j to fully initialize (30-60 seconds on first start), then check:All services should show “healthy” status.
Queries return no results
Queries return no results
Verify data was loaded:You should see:
Total loaded: X nodes and Y edgesIf not, check that your configuration files exist in data/.LLM errors
LLM errors