Skip to main content

IronGraph for Python

Python access to a CPU graph database with built-in streaming and queues.

Use Cypher to query graph structure, search text and vectors, inspect property history, and administer the database. Built-in Kafka-compatible Streams and AMQP-compatible Queues handle event and message workloads. The irongraph package provides native embedded access and remote Query API/Bolt clients for Python. IronGraph is open-source software released under the Apache License 2.0.

Performance at a glance

Graph queries execute on the CPU against one shared canonical graph. Local text inference can use Metal or CUDA independently. Measure complete queries separately from individual graph operations; latency depends on the workload, graph size, indexes, and host.

Database capabilities

Capability What you can do
Graph queries and analytics Match relationships and paths with Cypher; run shortest paths, PageRank, connected components, and community detection.
Temporal properties and analysis Retain property history, read values with AT TIME, inspect samples with HISTORY, and aggregate with time windows and maintained rollups.
Text documents and search Store the full text of articles, notes, manuals, and other written content on graph nodes; search that text with text and vector indexes and automatic local embeddings.
Built-in Kafka-compatible Streams Produce and consume events through supported Kafka clients; manage topics, partitions, retention, and consumer-lag monitoring.
Built-in AMQP-compatible Queues Use classic and stream queues, direct/fanout/topic exchanges, bindings, and retention with supported AMQP clients.

Cypher handles graph operations, temporal analysis, search, and stream/queue administration. Message producers and consumers use the supported Kafka or AMQP protocols through the instance's configured listeners. The SDK query interface does not replace those protocol clients.

Explicit projects and the OBSERVED, KNOWLEDGE, and WORKSPACE layers organize data. Indexes and unique constraints, transactions, asynchronous write-ahead logging, recovery, and periodic snapshots are part of the database.

The standalone instance serves its web console at http://127.0.0.1:18484/web/ by default and also supports local MCP access. Start the official standalone distribution before opening that address. Opening an embedded database through Python, Node.js, or Rust does not start a web server or expose the console. For a configured remote instance, use its HTTPS address followed by /web/, with the required browser-managed client certificate.

Temporal reads apply to declared properties within their retention window. Graph topology and ordinary properties are read in their current state.

Install

You need Python 3.9 or later and an official wheel. Native release targets are macOS 15+ ARM64 and Linux with glibc 2.28+ on ARM64 or AMD64. These are package build baselines; check your release's qualification results before deploying. After configuring the official package source supplied with your release:

python -m pip install --only-binary=:all: irongraph

The matching wheel must be published to that source. Installation uses a compiled database binary and does not require a Rust compiler.

Store and read a text document

Use a writable directory exclusively owned by your application process. Default startup downloads and verifies the local embedding model if absent, then loads and warms it. Allow network access and sufficient disk space on first use.

from irongraph import EmbeddedDatabase

with EmbeddedDatabase("./irongraph-data", device="cpu") as database:
    database.query("CREATE PROJECT IF NOT EXISTS notes")
    result = database.query(
        """USE notes
        MERGE (document:Document {id: $id})
        SET document.body = $body
        RETURN document.body AS body""",
        parameters={"id": "welcome", "body": "Graphs connect facts."},
    )
    print(result["rows"][0][0]["value"])

Expected output: Graphs connect facts. The context manager closes the database and the text document persists. Run the example again to update the same text document.

The example selects CPU across native release targets and keeps automatic text embedding enabled. Select embedding_device="metal" on a supported Mac to accelerate text inference.

Next, declare an embedding index on the text document body and use MATCH … SEARCH … RETURN to combine vector retrieval with graph filters. The same query method supports text document updates, indexes, temporal data, graph algorithms, and topic, queue, exchange, and binding administration. Text documents are ordinary graph nodes; their complete text remains on the owning node.

Use an async application

Use the async methods in an asyncio application. Concurrent calls share the same embedded database and graph, and database work runs outside the event loop.

import asyncio
from irongraph import EmbeddedDatabase

async def main():
    database = await EmbeddedDatabase.open_async("./irongraph-data", device="cpu")
    async with database:
        await database.query_async("CREATE PROJECT IF NOT EXISTS notes")
        result = await database.query_async("USE notes MATCH (n) RETURN count(n)")
        print(len(result["rows"]))

asyncio.run(main())

Expected output: 1. The async context manager closes the database. Async variants also cover streaming, status, cancellation, snapshots, and flushing. Concurrent data calls wait asynchronously for an available worker without a configurable operation quota.

Operate the database

Choose projects explicitly with USE or project_id; there is no implicit default. Each project has OBSERVED, KNOWLEDGE, and WORKSPACE layers for source facts, curated facts, and working data. Transactions, asynchronous write-ahead logging, recovery, and snapshots apply to embedded data as they do in a standalone instance.

One process uses one shared CPU graph and one active embedded instance. Text inference selects its CPU, Metal, or CUDA device independently; CUDA requires a CUDA-enabled release. Parallel reads do not wait for writers and may observe mixed values during a multi-record write. Keep the database open for the application's lifetime. IronGraph embeds text locally and does not run generative language models.

For remote access, use Client.api_mtls or Client.bolt_mtls with a client certificate, private-key path, and trusted certificate authority. Plain connections are loopback-only; remote access requires mutual TLS and a credential authorized for the project and operations.

License

IronGraph is licensed under the Apache License 2.0. Third-party components and the embedding model retain their own terms.

Metadata

Release files for irongraph 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for irongraph 0.1.7
File Interpreter ABI Platform
irongraph-0.1.7-cp39-abi3-manylinux_2_28_x86_64.whl CPython 3.9 abi3 Linux glibc 2.28+ x86-64 Details
irongraph-0.1.7-cp39-abi3-manylinux_2_28_aarch64.whl CPython 3.9 abi3 Linux glibc 2.28+ ARM64 Details
irongraph-0.1.7-cp39-abi3-macosx_15_0_arm64.whl CPython 3.9 abi3 macOS 15.0+ ARM64 Details

Total release size: 108.8 MB

Release files / irongraph-0.1.7-cp39-abi3-manylinux_2_28_x86_64.whl

Download URL irongraph-0.1.7-cp39-abi3-manylinux_2_28_x86_64.whl
Size 37.0 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
8fac50bc4f241a1b73740a3bfb6cd3409cd7ef55844418d89ea0879537f2dff4
BLAKE2b-256 checksum
How to use checksums
7a5728be3c8c3d1de4da39fa7e4d9e507a31bf1e68ec39519eb2af0192c58aa9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / irongraph-0.1.7-cp39-abi3-manylinux_2_28_aarch64.whl

Download URL irongraph-0.1.7-cp39-abi3-manylinux_2_28_aarch64.whl
Size 36.0 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
3bd0d64534ea1983b8c33f527ef1321e2b6741dfe6cc47272c20e6ba320db02c
BLAKE2b-256 checksum
How to use checksums
6c39ebb8f9f0fc56f96a720e12748a3ce69d0e2d6c49f48a1bd5c33cfbd44e8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / irongraph-0.1.7-cp39-abi3-macosx_15_0_arm64.whl

Download URL irongraph-0.1.7-cp39-abi3-macosx_15_0_arm64.whl
Size 35.8 MB
Tags CPython 3.9 abi3 macOS 15.0+ ARM64
SHA-256 checksum
How to use checksums
aa69bda7b47912eb7a0c51c0aede9c0285402540776a96567136b39ba96ee2db
BLAKE2b-256 checksum
How to use checksums
1c34d73091daf999db1a08b558e831d9ce9ef3e0089771e0160da6be15ddbb18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release history Release notifications | RSS feed

0.1.8

3 release files

This release

0.1.7 This release

3 release files

0.1.6

3 release files

0.1.5

3 release files

0.1.4

3 release files

0.1.3

3 release files

0.1.2

3 release files

0.1.1

3 release files

0.1.0

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page