Four packages, one native binary each. No Spark, no JVM. Pick the package for your workflow below, or deploy the full platform to Azure, AWS, or Google Cloud with one template.
Signed binaries for every platform: deltaforge-org/delta-forge on GitHub
The interactive query editor, catalog browser, and pipeline viewer. A single signed binary for macOS, Windows, and Linux: no Spark, no JVM.
curl -fsSL https://deltaforge.org/install.sh | sh
Or via Homebrew:
# Add the tap (one-time)
brew tap deltaforge-org/tap
brew install --cask deltaforge-platform
iwr -useb https://deltaforge.org/install.ps1 | iex
Or via winget (installs the signed MSI and adds the application to your PATH):
winget install DeltaForge.Platform
Detects your architecture (x64 or ARM64), downloads the matching AppImage, and adds a launcher entry:
curl -fsSL https://deltaforge.org/install.sh | sh
Prefer the terminal? Switch to deltaforge-cli above for scripting and CI, or deltaforge-compute to run a production node.
Every release artifact includes a detached GPG signature and a SHA256SUMS manifest.
# Import the signing key (one-time)
curl -fsSL https://deltaforge.org/pubkey.asc | gpg --import
# Verify a downloaded artifact
gpg --verify deltaforge-cli-1.0.7-linux-x64.tar.gz.sig \
deltaforge-cli-1.0.7-linux-x64.tar.gz
Fingerprint: B461 8130 D4B0 3CF5 454E 28F0 A859 0BF7 C3DC E5F3 ·
RSA 4096, UID releases@deltaforge.org
deltaforge desktop application for interactive development on macOS, Windows, or Linux. For terminal and CI work, switch to deltaforge-cli. For cloud production deployments, use deltaforge-compute.deltaforge-compute package.Installed and ready? Browse the live demos or read CSV to Delta Lake Without Spark.
The headless compute node. Deploy as a native binary on any cloud VM via systemd, or as a container in Docker or Kubernetes. The control plane requires a Postgres instance. No JVM, no Spark cluster to manage. Want the entire platform provisioned in one step, compute included? Use Cloud deployment instead.
The standard production deployment. Install the binary (detects x64 or ARM64), drop a systemd unit, and start the service.
curl -fsSL https://deltaforge.org/install.sh | sh -s -- --pkg deltaforge-compute
sudo tee /etc/systemd/system/deltaforge-compute.service >/dev/null <<EOF
[Unit]
Description=DeltaForge Compute Node
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/deltaforge-compute
Restart=on-failure
RestartSec=5
Environment=DELTAFORGE_LICENSE_KEY=your-license-key
Environment=DELTAFORGE_CONTROL_PLANE=https://console.deltaforge.org
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now deltaforge-compute
Once running, the node registers itself with your control plane workspace. Add more nodes at any time to scale throughput. See the autoscaling guide.
Useful for local development and testing compute node behaviour before deploying to a cloud VM.
curl -fsSL https://deltaforge.org/install.sh | sh -s -- --pkg deltaforge-compute
Or via Homebrew:
# Add the tap (one-time)
brew tap deltaforge-org/tap
brew install deltaforge-compute
Useful for local development on Windows workstations. For production, use the Linux systemd path.
iwr -useb https://deltaforge.org/install.ps1 | iex; Install-DeltaForge -Pkg deltaforge-compute
Or via winget:
winget install DeltaForge.Compute
Compute nodes run inside your cloud environment and read Delta Lake and Iceberg tables directly from object storage. They report license and metering data to the DeltaForge control plane over outbound HTTPS.
%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#1e1e2e', 'primaryBorderColor': '#b95731', 'lineColor': '#b95731', 'secondaryColor': '#13131a', 'tertiaryColor': '#0d0d14', 'clusterBkg': '#1a1b23', 'clusterBorder': '#444', 'edgeLabelBackground': '#13131a', 'nodeTextColor': '#e0e0e0'}}}%%
flowchart TB
subgraph clients["Client Tools"]
pbi["Power BI / Excel / Tableau"]
db["DBeaver / JDBC Applications"]
ai["Claude / Cursor via MCP"]
dfd["DeltaForge Desktop"]
end
subgraph cp["Control Plane (self-hosted or cloud)"]
cpsvc["deltaforge-control-plane :3000"]
pg[("PostgreSQL")]
cpsvc --- pg
end
subgraph cloud["Your Cloud: AWS, Azure, On-Premises"]
lb["Load Balancer / ASG / VMSS"]
subgraph nodes["Compute Fleet - horizontal scale"]
n1["deltaforge-compute"]
n2["deltaforge-compute"]
n3["deltaforge-compute ... +N"]
end
subgraph store["Object Storage: S3 / ADLS Gen2"]
dl["Delta Lake Tables"]
ice["Iceberg Tables"]
end
end
pbi & db --"ODBC / ADBC"--> cpsvc
ai --"MCP"--> cpsvc
dfd --"HTTP API"--> cpsvc
cpsvc --"query routing"--> lb
lb --> n1 & n2 & n3
n1 & n2 & n3 --"Parquet I/O"--> store
Install on any EC2 instance (x86-64 or ARM64), point table LOCATION paths at s3:// URIs, and IAM role credentials are picked up automatically from the instance profile.
Deploy on any Azure VM or VMSS. Table LOCATION paths use abfss:// (ADLS Gen2) or wasbs:// (Blob Storage) URIs. Managed Identity credentials are picked up automatically.
Deploy as a Docker container, in Kubernetes via Helm, or as a standalone binary on a VM fleet managed by an Auto Scaling Group or VMSS. The control plane also runs containerised and requires Postgres.
One template per cloud, written in each cloud's native language: Bicep on Azure, CloudFormation on AWS, Terraform on Google Cloud. A single deployment provisions the whole platform: web console, control plane, managed PostgreSQL catalog, object storage for your tables, a secret store, and HTTPS. Storage auth is keyless (managed identity, IAM task role, or service account), and you do not need a license key up front: the platform provisions a Community license automatically on first boot, attested by your cloud account. Templates live in deltaforge-org/delta-forge/deploy.
community.bicep provisions on Azure Container Apps. Why these services →Deploy straight from the portal. The button opens Azure's guided deployment form (resource group, admin accounts, sizing), generated from the same UI definition the Azure Marketplace offer uses:
Or from the command line with the Bicep source. Only the three passwords are required; everything else has sensible defaults:
git clone https://github.com/deltaforge-org/delta-forge
cd delta-forge/deploy/azure
az group create --name deltaforge --location westeurope
az deployment group create --resource-group deltaforge \
--template-file community.bicep \
--parameters adminPassword=<min-12-chars> \
engineerPassword=<min-12-chars> \
pgAdminPassword=<min-12-chars>
The deployment runs on Azure Container Apps with a pool of scale-to-zero compute slots that the built-in autoscaler starts and parks on demand. Pick the template for your tier: community.bicep (1 slot), standard.bicep (4 slots), or professional.bicep (9 slots). The guiEndpoint output is your console URL; sign in with the admin email and password you chose.
One CloudFormation stack provisions everything. Only the three passwords are required; everything else has sensible defaults:
git clone https://github.com/deltaforge-org/delta-forge
cd delta-forge/deploy/aws
aws cloudformation deploy \
--stack-name deltaforge \
--template-file cloudformation/deltaforge-platform.yaml \
--capabilities CAPABILITY_IAM \
--parameter-overrides \
AdminPassword=<min-12-chars> \
EngineerPassword=<min-12-chars> \
PgAdminPassword=<min-12-chars>
# Read the console URL once the stack is up
aws cloudformation describe-stacks --stack-name deltaforge \
--query "Stacks[0].Outputs[?OutputKey=='ConsoleUrl'].OutputValue" --output text
First boot runs the headless bootstrap: it provisions the catalog schema in RDS, seeds the admin and engineer accounts, and activates the license. Give it a couple of minutes, then browse to the console URL. On stack delete, the S3 tables bucket and a final RDS snapshot are retained so your data survives a teardown.
terraform apply provisions. Why these services →Open the Terraform module directly in Cloud Shell, or run it from any machine with Terraform 1.5+:
git clone https://github.com/deltaforge-org/delta-forge
cd delta-forge/deploy/gcp/terraform
cp terraform.tfvars.example terraform.tfvars
# set project_id; everything else has sensible defaults
terraform init
terraform apply
terraform output console_url
Admin and engineer passwords are auto-generated: read them with terraform output -raw admin_password, or from Secret Manager. First boot installs Docker on the VM, mounts the data disk, and runs the headless bootstrap; give it a few minutes before browsing to console_url.
The same topology on every cloud, mapped to that cloud's managed services. No access keys are stored anywhere: the engine reaches object storage through the platform's own cloud identity.
abfss://)s3://)gs://)Need a single compute node joining an existing control plane instead? Switch to deltaforge-compute above. For how compute scales up and down after the deploy, see the autoscaling guide.
Single binary for scripting queries, running SQL files, executing pipelines, and checking cluster health from any terminal or CI environment.
curl -fsSL https://deltaforge.org/install.sh | sh -s -- --pkg deltaforge-cli
Or via Homebrew (add the DeltaForge tap once, then install deltaforge-cli as a formula):
# Add the tap (one-time)
brew tap deltaforge-org/tap
brew install deltaforge-cli
Tap source: github.com/deltaforge-org/homebrew-tap
iwr -useb https://deltaforge.org/install.ps1 | iex; Install-DeltaForge -Pkg deltaforge-cli
Or via winget (installs the signed binary into your PATH) or Scoop (the preferred choice for portable, no-admin installs):
winget install DeltaForge.CLI
# Add the bucket (one-time)
scoop bucket add deltaforge https://github.com/deltaforge-org/scoop-bucket
scoop install deltaforge-cli
Detects your architecture (x64 or ARM64), downloads the matching tarball, and drops the binary on your PATH:
curl -fsSL https://deltaforge.org/install.sh | sh -s -- --pkg deltaforge-cli
Or manually:
# Substitute the latest version from the releases page
curl -fsSL https://github.com/deltaforge-org/delta-forge/releases/download/v1.0.0/deltaforge-cli-1.0.0-linux-x64.tar.gz \
| sudo tar -xz -C /usr/local/bin
A few things you can do from the terminal once the binary is on your PATH.
Execute any SQL script against a DeltaForge workspace and stream results to your terminal.
deltaforge-cli run query.sql
Trigger a numbered pipeline script and watch step-by-step progress in the terminal.
deltaforge-cli pipeline run --file pipeline.sql
Check the reachability and version of every registered compute node in a workspace.
deltaforge-cli status
Plugs DeltaForge into any MCP-compatible AI assistant. Exposes your Delta Lake catalog, pipeline graph, lineage, and query execution as typed tools an AI can call directly. No custom prompts, no clipboard-pasting schemas.
curl -fsSL https://deltaforge.org/install.sh | sh -s -- --pkg deltaforge-mcp
Or via Homebrew (add the DeltaForge tap once, then install deltaforge-mcp as a formula):
# Add the tap (one-time)
brew tap deltaforge-org/tap
brew install deltaforge-mcp
Tap source: github.com/deltaforge-org/homebrew-tap
iwr -useb https://deltaforge.org/install.ps1 | iex; Install-DeltaForge -Pkg deltaforge-mcp
Or via winget (installs the signed binary into your PATH) or Scoop (the preferred choice for portable, no-admin installs):
winget install DeltaForge.Mcp
# Add the bucket (one-time, skip if already added)
scoop bucket add deltaforge https://github.com/deltaforge-org/scoop-bucket
scoop install deltaforge-mcp
Detects your architecture (x64 or ARM64) and downloads the matching binary. --pkg deltaforge-mcp selects the MCP server instead of the default CLI package:
curl -fsSL https://deltaforge.org/install.sh | sh -s -- --pkg deltaforge-mcp
Point your AI assistant's MCP config at the server binary. The format is the same across all MCP-compatible tools.
{
"mcpServers": {
"deltaforge": {
"command": "deltaforge-mcp",
"args": ["--workspace", "your-workspace-id"]
}
}
}
Add the config block to claude_desktop_config.json: ~/Library/Application Support/Claude/ on macOS or %APPDATA%\Claude\ on Windows. Restart Claude Desktop to pick it up.
Open Cursor Settings, navigate to the MCP section, and paste the config block. Cursor reloads MCP servers without restarting, so the tools become available immediately.
Add the config block to your workspace or user settings.json under the mcp.servers key. The Copilot chat panel picks up the server on the next activation.
Full reference of exposed tools: MCP server documentation.
Register a workspace in the console, point it at a Git repo with SQL in it, and run your first query.