Repository navigation
GraphForge is an embedded, openCypher-compatible graph and analytics engine. It runs inside your Python or Node process, or through the gf command, with no database server. It is pre-v1.
What's in v0.6.0
- Local graphs. Build, load and query graphs locally, with analyst verbs and durable save/reopen. Tabular results are Arrow; graph data is Parquet.
- Research history. Branches, Versions (commits with parents and authors), tags, and git-style CLI verbs:
gf branch,gf commit,gf log,gf status,gf push,gf pull. - GraphForge Hub at graphforge.sh. Browse public Projects,
gf clonethem with verification, continue locally, andgf publishnew Versions back. - Ontologies. Permanent
ont_…module IDs, adopt/fork with provenance, per-module SPDX licenses, and machine-readable descriptors. Start a Project from an exact published ontology withgf project new --from-ontology. - Portable packages. One verified, native portable format records its producing Core version, with streaming OCI transfer.
- Agent support. Project-local agent skills and the
@curatelabs/graphforge-agent-skillspackage.
Rust owns all behavior. Python and Node are thin bindings.
Install
pip install graphforge # Python (includes `gf`)
npm install @curatelabs/graphforge # Node
npm install -g @curatelabs/graphforge-cli # `gf` CLI
cargo install graphforge-cli # from source (see Known issues)Native gf archives for Linux (x86_64, aarch64), macOS (x86_64, arm64) and Windows (x86_64) are attached below, with SHA-256 files. The protocol WebAssembly module is @curatelabs/graphforge-protocol-wasm.
Known issues and limits
- Pre-v1. No backward-compatibility or migration guarantee. Only current-format projects open; others return
GF_UNSUPPORTED_PROJECT_FORMAT. GraphForge warns when it opens, imports or clones data from a different Core version. - crates.io builds (
cargo install graphforge-cli) compile against stock DataFusion 54. They lack two fixes that the Python wheel, the npm packages and the GitHub Release archives carry: a spill-pool hang (apache/datafusion#24883) and a join-planning error (#2084). Prefer the release archives, PyPI or npm for heavy queries. - Hub publishing size. Every graphforge.sh account holds up to 128 MiB of published and pending objects, at most 64 MiB per object, on every plan. Larger Projects are refused with
storage_cap; request more storage from your account page. The large-object upload path is post-launch Hub work (CurateLabs/graphforge-nextjs#48). - Headless publishing.
gf auth loginandgf publishneed an OS credential vault (Keychain, Windows Credential Manager or a Secret Service keyring). Without one they fail closed withhub.auth_denied: OS credential vault unavailable, even in a terminal. In CI and agents, set a repository-scopedGRAPHFORGE_HUB_PUBLISH_TOKEN; on a headless Linux host, run an unlocked Secret Service keyring. - Reading a Branch head.
gf queryreads the Project's workspace generation.gf commitrecords Branch Versions. Read a Branch head withgf research branch query --branch-uuid …orGraphForge.query_research_branch(). - Repository module fetch.
gf ontology module fetch OWNER/REPOreturns modules in the repository's current head composition. Earlier module versions stay listed, with their licenses, on the ontology's Hub pages. - Unproven filesystem classes open with
GF_UNVERIFIED_FILESYSTEM;GRAPHFORGE_FILESYSTEM_DURABILITY=strictrefuses them. Hosted notebook disks are ephemeral, so export before the runtime recycles. - Ingest rate. S22 measured 184,749 edges/s, below the 1,000,000 edges/s target. Strong multicore ingest scaling is not established.
- GDC suites. These are failed or incomplete. Unresolved resource, coverage and reference outcomes are tracked in #2178.
- Private repositories and browser-login qualification are outside this release's tested scope.
Full changes
The full change list since v0.5.2 is longer than GitHub's release-body limit; see the comparison and the v0.6.0 milestone.