Native Python bindings for ArcadeDB - the multi-model database that supports Graph, Document, Key/Value, Search Engine, Time Series, and Vector models.
Status: ✅ Production Ready | Tests: 271 Passing | Platforms: 4 Supported
📖 Read the Full Documentation →
uv pip install arcadedb-embeddedRequirements:
- Python 3.10–3.14 (packaged/tested on CPython 3.12) - No Java installation required!
- Supported Platforms: Prebuilt wheels for 4 platforms
- Linux: x86_64, ARM64
- macOS: Apple Silicon (ARM64)
- Windows: x86_64
import arcadedb_embedded as arcadedb
# Create database (context manager for automatic open and close)
with arcadedb.create_database("./mydb") as db:
# Create schema (DDL)
db.command("sql", "CREATE DOCUMENT TYPE Person")
db.command("sql", "CREATE PROPERTY Person.name STRING")
db.command("sql", "CREATE PROPERTY Person.age INTEGER")
# Insert data (requires transaction)
with db.transaction():
db.command("sql", "INSERT INTO Person SET name = 'Alice', age = 30")
# Query data
result = db.query("sql", "SELECT FROM Person WHERE age > 25")
for record in result:
print(f"Name: {record.get('name')}")- ☕ No Java Installation Required: Bundled JRE (~60MB uncompressed)
- 🌍 4 Platforms Supported: Linux (x86_64, ARM64), macOS (ARM64), Windows (x86_64)
- 🚀 Embedded Mode: Direct database access in Python process (no network)
- 🌐 Server Mode: Optional HTTP server with Studio web interface
- 📦 Self-contained: All dependencies bundled (~68MB wheel)
- 🔄 Multi-model: Graph, Document, Key/Value, Vector, Time Series
- 🔍 Multiple query languages: SQL, OpenCypher, MongoDB
- ⚡ High performance: Direct JVM integration via JPype
- 🔒 ACID transactions: Full transaction support
- 🎯 Vector storage: Store and query vector embeddings with HNSW (JVector) indexing
- 📥 Data import: Built-in CSV and ArcadeDB JSONL import
The arcadedb-embedded package is platform-specific and self-contained:
Package Contents (all platforms):
- Wheel size (compressed): ~68MB
- ArcadeDB JARs (uncompressed): ~32MB
- Bundled JRE (uncompressed): ~60MB (platform-specific Java 25 runtime via jlink)
- Total uncompressed size: ~95MB
Note: Some JARs are excluded to optimize package size (e.g., gRPC wire protocol). See jar_exclusions.txt for details.
Import: import arcadedb_embedded as arcadedb
Status: 271 tests + example scripts passing on all 4 platforms
# Run all tests
pytest tests/
# Run specific test file
pytest tests/test_core.py -vSee testing documentation for detailed test documentation.
Linux uses Docker. macOS and Windows use a native Java 25+ JDK with jlink.
cd bindings/python/
# Install uv (one-time)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create virtual environment with uv
uv venv .venv
source .venv/bin/activate
# Install build and test dependencies
uv pip install build
uv pip install -e ".[test]"
# Build for your current platform (auto-detected)
./build.shBuilt wheels will be in dist/.
Developer Note: See build architecture docs for comprehensive documentation of the multi-platform build architecture, including how we achieve platform-specific JRE bundling across the supported platforms on GitHub Actions.
Versions are automatically extracted from the main ArcadeDB pom.xml. See versioning strategy for details on development vs release mode handling.
arcadedb_embedded/
├── __init__.py # Public API exports
├── core.py # Database and DatabaseFactory
├── server.py # ArcadeDBServer for HTTP mode
├── results.py # ResultSet and Result wrappers
├── transactions.py # TransactionContext manager
├── schema.py # Schema management API
├── vector.py # Vector search and HNSW (JVector) indexing
├── importer.py # Data import (CSV, JSONL)
├── exporter.py # Data export (JSONL, GraphML, GraphSON, CSV)
├── graph.py # Graph API helpers
├── batch.py # Batch operations context
├── async_executor.py # Asynchronous query execution
├── type_conversion.py # Python-Java type conversion utilities
├── exceptions.py # ArcadeDBError exception
├── jvm.py # JVM lifecycle management
└── _version.py # Package version infoSee our contributing guidelines
Both upstream ArcadeDB (Java) and this ArcadeDB Embedded Python project are licensed under Apache 2.0, fully open and free for everyone, including commercial use.
- Documentation: https://docs.humem.ai/arcadedb/latest/
- PyPI: https://pypi.org/project/arcadedb-embedded/
- GitHub: https://github.com/humemai/arcadedb-embedded-python
- ArcadeDB Main Docs: https://docs.arcadedb.com
- Issues: https://github.com/humemai/arcadedb-embedded-python/issues