A comprehensive suite of client SDKs, data tools, and management utilities for Apache HugeGraph graph database. Build applications, load data, and manage graphs with production-ready tools.
Hubble's primary authentication and connection design targets HugeGraph 1.8/master: PD discovery supplies the server address, anonymous mode uses a real unauthenticated client, and account/GraphSpace permissions are reduced to four readable presets. A thin adapter keeps 1.7 usable and limits 1.5 to its standalone core graph workflow; version checks are centralized rather than spread across UI pages.
Hubble brings graph exploration, schema preparation, asynchronous analysis, and distributed cluster operations into one workspace.
The cluster overview keeps service topology, node health, source status, and capacity facts in one operational view.
Quick Navigation: Architecture | Quick Start | Modules | Build | Docker | Related Projects
HugeGraph Ecosystem:
┌─────────────────────────┐
│ HugeGraph Server │
│ (Graph Database) │
└───────────┬─────────────┘
│ REST API
┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐
Distributed (Optional)│
│ ┌───────────┐ │ ┌───────────┐ │
│hugegraph- │◄──────┴──────►│hugegraph- │
│ │ pd │ │ store │ │
└───────────┘ └───────────┘
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘
│
┌─────────────────────┼─────────────────────┐
│ │ │
▼ ▼ ▼
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ hugegraph- │ │ Other Client │ │ Other REST │
│ client (Java) │ │ SDKs (Go/Py) │ │ Clients │
└───────┬────────┘ └────────────────┘ └────────────────┘
│ depends on
┌───────┼───────────┬───────────────────┐
│ │ │ │
▼ ▼ ▼ ▼
┌────────┐ ┌────────┐ ┌──────────┐ ┌───────────────────┐
│ loader │ │ hubble │ │ tools │ │ spark-connector │
│ (ETL) │ │ (Web) │ │ (CLI) │ │ (Spark I/O) │
└────────┘ └────────┘ └──────────┘ └───────────────────┘
| Requirement | Version | Notes |
|---|---|---|
| JDK | 17+ | Build and run the core tools with Java 17 |
| Maven | 3.6.3+ | For building from source |
| HugeGraph Server | Current 1.8 or official 1.7.0 | See the migration guide for Server 1.5 scope |
For the Java 17 candidate SDK, upgrade procedure and compatibility boundary, see the migration guide.
| I want to... | Use This | Get Started |
|---|---|---|
| Visualize graphs via Web UI | Hubble | Docker: docker run -p 8088:8088 hugegraph/hugegraph-hubble |
| Load CSV/JSON data into graph | Loader | CLI with JSON mapping config (docs) |
| Build a Java app with HugeGraph | Client | Maven dependency (example) |
| Backup/restore graphs | Tools | CLI commands (docs) |
| Process graphs with Spark | Spark Connector | DataFrame API (module) |
# Hubble Web UI (port 8088) docker run -d -p 8088:8088 --name hubble hugegraph/hugegraph-hubble # Loader (batch data import) docker run --rm hugegraph/hugegraph-loader ./bin/hugegraph-loader.sh -f example.json
Before committing a new source or test file, run the same license-header check used by CI (license-eye from apache/skywalking-eyes is required):
./tools/check-license-header.sh
Do not use shortened Apache headers: the complete header configured in .licenserc.yaml is required.
Purpose: Official Java SDK for HugeGraph Server
Key Features:
Entry Point: org.apache.hugegraph.driver.HugeClient
Quick Example:
HugeClient client = HugeClient.builder("http://localhost:8080", "hugegraph").build(); // Schema management client.schema().propertyKey("name").asText().ifNotExist().create(); client.schema().vertexLabel("person") .properties("name") .ifNotExist() .create(); // Graph operations Vertex vertex = client.graph().addVertex(T.label, "person", "name", "Alice");
📖 Documentation | 📁 Source
Purpose: Official Go SDK for HugeGraph Server
Key Features:
Entry Point: github.com/apache/hugegraph-toolchain/hugegraph-client-go
Quick Example:
import "github.com/apache/hugegraph-toolchain/hugegraph-client-go" client := hugegraph.NewClient("http://localhost:8080", "hugegraph") // Schema and graph operations
📁 Source
Looking for other languages? See hugegraph-python-client in the hugegraph-ai repository.
Purpose: Batch data import tool from multiple data sources
Key Features:
Entry Point: bin/hugegraph-loader.sh
Quick Example:
# Load data from CSV ./bin/hugegraph-loader.sh -f mapping.json -g hugegraph # Example mapping.json structure { "vertices": [ { "label": "person", "input": { "type": "file", "path": "persons.csv" }, "mapping": { "name": "name", "age": "age" } } ] }
📖 Documentation | 📁 Source
Purpose: Web-based graph management and visualization platform
Key Features:
Technology Stack: Spring Boot + React + TypeScript + MobX + Ant Design
Entry Point: bin/start-hubble.sh (default port: 8088)
Quick Start:
cd hugegraph-hubble/apache-hugegraph-hubble-*/bin ./start-hubble.sh # Background mode ./start-hubble.sh -f # Foreground mode ./stop-hubble.sh # Stop server
📖 Documentation | 📁 Source
Purpose: Command-line utilities for graph operations
Key Features:
Entry Point: bin/hugegraph CLI commands
Quick Example:
# Backup graph bin/hugegraph backup -t all -d ./backup # Restore graph bin/hugegraph restore -t all -d ./backup
📁 Source
Purpose: Spark integration for reading and writing HugeGraph data
Key Features:
Entry Point: Scala API with Spark DataSource v2
Quick Example:
// Read vertices as DataFrame val vertices = spark.read .format("hugegraph") .option("host", "localhost:8080") .option("graph", "hugegraph") .option("type", "vertex") .load() // Write DataFrame to HugeGraph df.write .format("hugegraph") .option("host", "localhost:8080") .option("graph", "hugegraph") .save()
📁 Source
<!-- Note: Use the latest release version in Maven Central --> <dependency> <groupId>org.apache.hugegraph</groupId> <artifactId>hugegraph-client</artifactId> <version>1.7.0</version> </dependency> <dependency> <groupId>org.apache.hugegraph</groupId> <artifactId>hugegraph-loader</artifactId> <version>1.7.0</version> </dependency>
Check Maven Central for the latest versions.
Normal builds use the 1.8.0 SDK and release packaging checks. Select the staging repository in Maven settings and use an isolated local repository:
release_settings=/absolute/path/to/settings-with-selected-staging.xml release_repository=$(mktemp -d /tmp/hugegraph-release-m2.XXXXXX) mvn --settings "$release_settings" -Dmaven.repo.local="$release_repository" clean install \ -DskipTests -Dmaven.javadoc.skip=true -ntp
Distribution packaging requires Python 3.9 or newer. Release mode checks required SDK POM/JARs and packaged library versions and bytes, and rejects candidate manifests. Add -Papache-release for the Apache release profile; see release packaging. To build the pinned same-source 1.8.0 SDK instead, follow the bootstrap instructions and supply -Dmaven.repo.local="$candidate_dir/m2" -Dhugegraph.version=1.8.0 -Dsdk.validation.mode=candidate to every module build.
The aggregate Maven module is org.apache.hugegraph:hugegraph-toolchain-dist:1.8.0, distinct from Server's hugegraph-dist coordinate. Its source directory remains hugegraph-dist; the release archive remains apache-hugegraph-toolchain-1.8.0.tar.gz.
Until the 1.8.0 SDK is available in Maven Central, apply the same --settings "$release_settings" and -Dmaven.repo.local="$release_repository" options from Full Build to each Maven command below.
| Module | Build Command |
|---|---|
| Client | mvn -e compile -pl hugegraph-client -Dmaven.javadoc.skip=true -ntp |
| Loader | mvn install -pl hugegraph-client,hugegraph-loader -am -DskipTests -ntp |
| Hubble | mvn install -pl hugegraph-client,hugegraph-loader -am -DskipTests -ntp && cd hugegraph-hubble && mvn package -DskipTests -ntp |
| Tools | mvn install -pl hugegraph-client,hugegraph-tools -am -DskipTests -ntp |
| Spark | mvn install -pl hugegraph-client,hugegraph-spark-connector -am -DskipTests -ntp |
| Go Client | cd hugegraph-client-go && make all |
Hubble frontend builds require stable Node.js 24 (at least the version in hubble-fe/.node-version) and the exact pnpm version in hubble-fe/package.json. Install Corepack if your Node distribution does not include it, then run corepack enable and pnpm --version from hugegraph-hubble/hubble-fe before the Maven build. Later Node 24 patch/minor releases are supported; Node 25 and prerelease builds require a separate compatibility upgrade.
| Module | Test Type | Command |
|---|---|---|
| Client | Unit (no server) | mvn test -pl hugegraph-client -Dtest=UnitTestSuite |
| Client | API (server needed) | mvn test -pl hugegraph-client -Dtest=ApiTestSuite |
| Client | Functional | mvn test -pl hugegraph-client -Dtest=FuncTestSuite |
| Loader | Unit | mvn test -pl hugegraph-loader -P unit |
| Loader | File sources | mvn test -pl hugegraph-loader -P file |
| Loader | HDFS | mvn test -pl hugegraph-loader -P hdfs |
| Loader | JDBC | mvn test -pl hugegraph-loader -P jdbc |
| Loader | Kafka | mvn test -pl hugegraph-loader -P kafka |
| Hubble | Unit | mvn test -P unit-test -pl hugegraph-hubble/hubble-be |
| Tools | Functional | mvn test -pl hugegraph-tools -Dtest=FuncTestSuite |
Checkstyle is enforced via tools/checkstyle.xml:
System.out.printlnRun checkstyle:
mvn checkstyle:check
Official Docker images are available on Docker Hub:
| Image | Purpose | Port |
|---|---|---|
hugegraph/hugegraph-hubble | Web UI | 8088 |
hugegraph/hugegraph-loader | Data loader | - |
Examples:
# Hubble docker run -d -p 8088:8088 --name hubble hugegraph/hugegraph-hubble # Loader (mount config and data) docker run --rm \ -v /path/to/config:/config \ -v /path/to/data:/data \ hugegraph/hugegraph-loader \ ./bin/hugegraph-loader.sh -f /config/mapping.json
Build images from the Toolchain repository root so the context contains the shared SDK bootstrap and verifier:
# Loader docker build -f hugegraph-loader/Dockerfile \ -t hugegraph/hugegraph-loader:latest . # Hubble docker build -f hugegraph-hubble/Dockerfile \ -t hugegraph/hugegraph-hubble:latest .
Multi-platform builds use BuildKit's automatic platform arguments. The Maven and Node build stages run on $BUILDPLATFORM, while the final JRE stage uses $TARGETPLATFORM. Java bytecode and frontend assets are architecture-neutral, so they are built once without QEMU. Target-stage package installation still runs for each architecture.
This optimization applies only to architecture-independent build outputs. A component that compiles native code must use a target-platform build stage or separate platform stages. Loader and Hubble packaging is validated on arm64; native dependencies must still be audited. Loader includes arm64 variants for Snappy, LZ4, Commons Crypto, and gRPC tcnative. Some optional legacy HBase and Jansi natives remain x86-only, so their fallback paths require target-runtime validation when those optional features are used.
Welcome to contribute to HugeGraph! Please see How to Contribute for more information.
Note: It's recommended to use GitHub Desktop to simplify the PR and commit process.
Thank you to all the people who already contributed to HugeGraph!
hugegraph-toolchain is licensed under Apache 2.0 License.
See CI behavior for affected-module tests, shared fixtures and retry rules.