Documentation

Quick Start

⚡ Quick Start in 5 Minutes

Get JetGraph running locally and execute your first graph query — no build step, no configuration.

  1. 1

    Start JetGraph with Docker Compose

    Save the following as docker-compose.yml and run docker compose up -d.

docker-compose.yml
services: graphengine: image: alhascan/jetgraph-demo:latest restart: unless-stopped ports: - "8080:8080" - "7687:7687" volumes: - graphengine-data:/data environment: RUST_LOG: info ENABLE_ADMIN_RESET: "true" healthcheck: test: ["CMD", "sh", "-c", "curl -sf http://localhost:8080/health || curl -sf http://localhost:8080/api/health || exit 1"] interval: 10s timeout: 5s retries: 5 start_period: 120s segment-evaluator: image: alhascan/jetgraph-demo:latest entrypoint: ["/usr/local/bin/segment-evaluator"] restart: unless-stopped environment: RUST_LOG: info GRAPH_ENGINE_ENDPOINT: http://graphengine:50051 SEGMENT_EVALUATOR_CONFIG_DB: /data/seg-config volumes: - seg-config-data:/data/seg-config depends_on: graphengine: condition: service_healthy pattern-miner: image: alhascan/jetgraph-demo:latest entrypoint: ["/usr/local/bin/pattern-miner"] restart: unless-stopped environment: RUST_LOG: info GRAPH_ENGINE_ENDPOINT: http://graphengine:50051 PATTERN_MINER_CONFIG_DB: /data/pm-config PATTERN_MINER_ADDR: 0.0.0.0:8082 volumes: - pm-config-data:/data/pm-config depends_on: graphengine: condition: service_healthy graphengine-ui: image: alhascan/jetgraph-ui-demo:latest restart: unless-stopped ports: - "80:3000" environment: BOLT_URL: bolt://graphengine:7687 NEO4J_USER: "" NEO4J_PASSWORD: "" GRAPH_HTTP_URL: http://graphengine:8080 SEGMENT_API_URL: http://segment-evaluator:8081 PATTERN_MINER_URL: http://pattern-miner:8082 depends_on: graphengine: condition: service_healthy volumes: graphengine-data: seg-config-data: pm-config-data:
  1. 2

    Verify the engine is ready

    Wait about 5 seconds for the container to start, then check the health endpoint.

bash
curl http://localhost:8080/health # → {"status":"ok","ready":true}
  1. 3

    Load sample data with one click (optional)

    Open the Admin UI at http://localhost, click Schema in the left nav, then click ⚡ Apply Schema & Load Sample Data in the Quick Start — Credit Card Fraud Space card. This provisions the Credit Card Fraud schema and seeds a representative dataset so every query in Analytics returns results. When the green All done banner appears, explore the data in Graph Explorer, Cypher Editor, or the Analytics pages. Prefer to bring your own schema? Skip this step and register it manually in Step 4 below.

  1. 4

    Or — register a schema and write your first node

    Skip this step if you loaded the sample dataset in Step 3. Otherwise, schema must be declared once before any data can be written. Run these three calls in order.

bash — POST /cypher
# Step 1 — register a node type curl -sS -X POST http://localhost:8080/cypher \ -H 'Content-Type: application/json' \ -d '{"query":"CALL db.registerNodeType(\"USER\", \"string\") YIELD node_type_id RETURN node_type_id","parameters":{}}' # Step 2 — finalize the schema (required before any writes) curl -sS -X POST http://localhost:8080/cypher \ -H 'Content-Type: application/json' \ -d '{"query":"CALL db.finalizeSchema() YIELD schema_version RETURN schema_version","parameters":{}}' # Step 3 — create a node curl -sS -X POST http://localhost:8080/cypher \ -H 'Content-Type: application/json' \ -d '{"query":"CREATE (u:USER {external_id: $id}) RETURN u.external_id AS created","parameters":{"id":"user-001"}}' # → {"columns":["created"],"rows":[["user-001"]]}
The Admin UI at http://localhost gives you a Cypher editor, schema designer, and graph explorer — great for exploration without writing code.

Running JetGraph

Prerequisites

Exposed Ports

PortProtocolPurpose
8080HTTPCypher REST API (POST /cypher), health, metrics
7687TCP / BoltBolt binary protocol — Neo4j driver compatible
50051TCP / gRPCHigh-throughput Rust client (jetgraph-client crate), streaming ingestion
80HTTPAdmin UI (graphengine-ui container)

Health Check

bash
curl http://localhost:8080/health # {"status":"ok","ready":true}
ℹ️
The engine starts with an empty in-memory graph. Schema must be registered and finalized before any data can be written. The schema persists to the mounted volume so it survives container restarts.