-
Notifications
You must be signed in to change notification settings - Fork 42
Open
Description
Add Kuzu embedded database support
Summary
Add support for Kuzu (https://kuzudb.com) as an embedded graph database option for Cue/Blarify. This would provide a lightweight, zero-configuration alternative to Neo4j that doesn't require running a separate server.
Motivation
Currently, Cue requires either:
- A Neo4j server (requires Docker/installation, network configuration, authentication)
- FalkorDB (requires Redis server)
For users who want a simple, local-only workflow without server management, Kuzu offers:
- Embedded database - No server required, runs in-process
- File-based storage - Simple directory-based persistence
- openCypher compatibility - Same query language as Neo4j
- Zero configuration - Just specify a directory path
- Python-native - Pure Python installation via pip
Proposed Implementation
Add a new KuzuManager class that implements the AbstractDbManager interface:
- Location:
cue/db_managers/kuzu_manager.py - Dependencies: Add
kuzupackage to pyproject.toml - Interface compliance: Implement all AbstractDbManager methods
- CLI integration: Add
--db-type kuzuoption alongside existing neo4j/falkordb options - Default behavior: Use Kuzu by default for simplicity
Benefits
- Lower barrier to entry for new users
- Simpler local development workflow
- No Docker/server management required
- Maintains full compatibility with existing Neo4j workflows
- Same openCypher query language
Testing
We have a working implementation tested on:
- 893 files
- 1,434 classes
- 8,753 functions
We can provide comprehensive tests and documentation.
Questions
- Would you prefer Kuzu as the default database or keep Neo4j as default?
- Any specific code style or testing requirements we should follow?
- Should we update documentation/examples to show Kuzu usage?
We're ready to submit a clean, well-tested PR if this aligns with the project's direction.
/cc @JuanVargas @benerrazuriz
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels