Features

A complete database migration toolkit. Engine, CLI, SDK, AI integration, and web UI — all open source.

Columnar processing for maximum throughput

Apache Arrow Engine

Bani uses Apache Arrow as a universal columnar interchange format. Source data is read into Arrow RecordBatches, then written to the target database. This N-mapper architecture means you only need one reader and one writer per database, not an N-to-N matrix of converters.

  • Zero-copy batch processing with pyarrow RecordBatch
  • Memory-efficient streaming for large tables
  • Automatic type mapping between database-specific types and Arrow types
  • Consistent in-memory representation regardless of source or target

Declarative, version-controlled migrations

Bani Definition Language (BDL)

Define your migration in XML or JSON using BDL. Specify source and target connections, table mappings, column transformations, and index handling. Check your BDL files into version control alongside your application code.

  • XML and JSON format support
  • Table-level and column-level mapping control
  • Schema evolution and transformation rules
  • Environment variable references for secrets management

Pluggable architecture, community extensible

Connector System

Each database is supported through a connector plugin. Connectors implement a standard interface for reading schema, reading data, writing schema, and writing data. New connectors can be installed as Python packages and discovered via entry points.

  • 5 built-in connectors: PostgreSQL, MySQL, MSSQL, Oracle, SQLite
  • Standard connector interface for consistent behavior
  • Entry-point-based discovery for community connectors
  • Source-agnostic design: connectors work for both reading and writing

10 tools for AI-driven migrations

AI Integration (MCP Server)

Bani includes a built-in MCP (Model Context Protocol) server that exposes 10 tools. Connect it to Claude Desktop, Cursor, or any MCP-compatible AI agent. The agent can inspect databases, generate BDL configurations, validate them, and run migrations through natural language.

  • Schema inspection and comparison tools
  • BDL generation and validation
  • Migration execution and progress monitoring
  • Secure environment variable references (no plaintext credentials)

Real-time progress monitoring

Web Dashboard

A React-based web dashboard provides visual monitoring of running migrations. Track progress per table, view logs, and manage multiple migration projects. The backend uses Server-Sent Events (SSE) for real-time updates without polling.

  • React UI with real-time SSE updates
  • Per-table progress bars and row counts
  • Structured log viewer with filtering
  • Project management and history

11 commands for every workflow

CLI

The Bani CLI provides 11 commands covering the entire migration lifecycle. Initialize projects, inspect schemas, validate configurations, preview migrations, and run them. JSON output mode makes the CLI scriptable and CI/CD-friendly.

  • bani init, run, validate, preview, status
  • bani schema inspect, schema diff
  • bani connectors list, connectors info
  • bani mcp serve, mcp tools
  • JSON output mode for automation

Programmatic control with a fluent API

Python SDK

The Python SDK provides a ProjectBuilder API for constructing migration projects programmatically. SchemaInspector enables analysis and comparison of database schemas. Use the SDK in scripts, notebooks, CI/CD pipelines, or your own applications.

  • Fluent ProjectBuilder API
  • SchemaInspector for schema analysis
  • Full control over migration lifecycle
  • Type-hinted API with comprehensive docstrings

Run everywhere your databases live

Cross-Platform

Bani ships as a Python package (pip install bani), a macOS menu bar application, a Docker image, and platform-specific installers. The same migration engine runs identically across all platforms.

  • macOS .dmg with menu bar app
  • Docker image for containerized deployments
  • Linux .deb and .rpm packages
  • Windows installer
  • pip install for any Python environment

Ready to get started?

Install Bani in seconds and run your first migration.