This page provides an overview of the high-level language bindings for Infino. These bindings wrap the core Rust engine to provide a native experience in Python and Node.js, enabling developers to build search-heavy applications without managing a separate database server.
The bindings mirror the core Rust API, focusing on the Connection, Table, and IndexSpec abstractions. They utilize Apache Arrow as the primary data interchange format, ensuring zero-copy or low-overhead data transfer between the host language and the Rust core. To ensure consistency, the repository includes an API parity guard that verifies every public engine method is wrapped by both bindings scripts/check_api_parity.py1-27
Infino's bindings are built using industry-standard bridge technologies:
PyO3 and maturin. It targets CPython 3.9+ and uses pyarrow for data handling infino-python/README.md35-37 infino-python/python/infino/_infino.pyi4-5napi-rs. It targets Node.js 18+ and uses the apache-arrow JavaScript library infino-node/README.md36-38 infino-node/README.md98-99The following diagram illustrates how the language-specific entities map to the underlying Rust implementation.
Binding Entity Mapping
Sources: infino-python/python/infino/_infino.pyi21-43 infino-node/README.md41-73 api-parity.txt9-26
While each language follows its own idiomatic patterns (e.g., snake_case in Python, camelCase in Node.js), the API surface is functionally identical across both bindings api-parity.txt1-27
| Feature | Description |
|---|---|
| Connection | The entry point to the system. Opens a catalog via a URI (e.g., s3://, memory://, or local path) infino-python/python/infino/_infino.pyi21-29 infino-node/README.md42-46 |
| IndexSpec | A builder-pattern class used to declare which columns should be indexed for BM25 (Full-Text) or Vector search infino-python/python/infino/_infino.pyi38-41 infino-node/README.md54-58 |
| Table | Handles data mutations (append, update, delete) and search operations (bm25_search, vector_search, hybrid_search) infino-python/python/infino/_infino.pyi43-98 infino-node/README.md61-71 |
| SQL | A query_sql method on the connection that allows running DataFusion-powered SQL queries across tables infino-python/python/infino/_infino.pyi36 infino-node/README.md72 |
Both bindings use Apache Arrow as the "lingua franca" for data movement.
append method infino-python/python/infino/_infino.pyi14-19 infino-node/README.md36-38Data Flow: Language to Core
Sources: infino-python/python/infino/_infino.pyi43-52 infino-node/README.md61-71 api-parity.txt14-25
For detailed installation guides, code examples, and language-specific API references, see the following child pages:
Covers the PyO3 implementation. Highlights include integration with the Python data science stack (pandas, pyarrow), type stubs for IDE support, and support for uv or pip installation infino-python/README.md22-37
Covers the napi-rs implementation. Highlights include TypeScript definitions, support for both ESM and CommonJS, and prebuilt native binaries for macOS and Linux infino-node/README.md27-38
The project Makefile provides standardized targets for managing the bindings and ensuring API parity.
| Command | Action |
|---|---|
make python-test | Builds the Python extension into a venv and runs pytest Makefile139-144 |
make python-typecheck | Validates package re-exports and samples using mypy --strict Makefile151-153 |
make api-parity | Guards that every public engine method is mirrored in both bindings Makefile41-42 |
make node-test | Runs the Node.js test suite Makefile6 |
Sources: Makefile5-6 Makefile41-42 Makefile139-153