doc: add AGENTS.md, update README and project config (#711) * doc: add AGENTS.md, update README and project config Add AGENTS.md with guidance for AI coding assistants and repository build/run commands. Expand and reorganize README: add architecture diagrams, detailed module overviews, quick start, Docker examples, build/test commands, and bump example dependency versions to 1.7.0. Update .serena/project.yml to include project_name and placeholder settings for included tools, modes, and fixed_tools to better configure Serena project metadata. * Update README.md * Update README.md * Disable Serena modes; tweak Maven commands Set base_modes and default_modes to empty lists in .serena/project.yml to disable project-level base/default modes. Update README Maven invocation: add -e to the client compile for extended error output and add -ntp to Hubble-related mvn commands to suppress transfer progress and align flags across examples.
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.
Quick Navigation: Architecture | Quick Start | Modules | Build | Docker | Related Projects
HugeGraph Ecosystem:
graph TB subgraph server ["HugeGraph Server"] SERVER[("Graph Database")] end subgraph distributed ["Distributed Mode (Optional)"] PD["hugegraph-pd<br/>(Placement Driver)"] STORE["hugegraph-store<br/>(Storage Nodes)"] end subgraph clients ["Client SDKs"] CLIENT["hugegraph-client<br/>(Java)"] end subgraph data ["Data Tools"] LOADER["hugegraph-loader<br/>(Batch Import)"] SPARK["hugegraph-spark-connector<br/>(Spark I/O)"] end subgraph mgmt ["Management Tools"] HUBBLE["hugegraph-hubble<br/>(Web UI)"] TOOLS["hugegraph-tools<br/>(CLI)"] end SERVER <-->|REST API| CLIENT PD -.->|coordinates| STORE SERVER -.->|distributed backend| PD CLIENT --> LOADER CLIENT --> HUBBLE CLIENT --> TOOLS CLIENT --> SPARK HUBBLE -.->|WIP: pd-client| PD LOADER -.->|Sources| SRC["CSV | JSON | HDFS<br/>MySQL | Kafka"] SPARK -.->|I/O| SPK["Spark DataFrames"] style distributed stroke-dasharray: 5 5
┌─────────────────────────┐
│ 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 | 11+ | LTS recommended |
| Maven | 3.6+ | For building from source |
| HugeGraph Server | 1.5.0+ | Required for client/loader |
| 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
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-incubating-*/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.
mvn clean install -DskipTests -Dmaven.javadoc.skip=true -ntp
| 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 |
| 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 locally:
# Loader cd hugegraph-loader && docker build -t hugegraph/hugegraph-loader:latest . # Hubble cd hugegraph-hubble && docker build -t hugegraph/hugegraph-hubble:latest .
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.