Last Updated: 3/19/2026
CLI Reference (fda)
The fda command-line tool provides a convenient interface for managing Feldera pipelines from the terminal. This guide covers installation, configuration, and common workflows.
Installation
Quick Install
Linux:
curl -fsSL https://feldera.com/install-fda | bashSupported platforms:
- linux-x86_64
- linux-aarch64
Requires glibc >= 2.39 (Ubuntu 24.04+, Debian 13+, Fedora 40+, RHEL 10+).
Windows:
powershell -ExecutionPolicy Bypass -NoProfile -c "irm https://feldera.com/install-fda.ps1 | iex"Supported platforms:
- windows-x86_64
- windows-arm64 (via emulation)
Requires Windows 10 or later with PowerShell 5.1+. Installs fda.exe to %USERPROFILE%\.feldera\bin and adds it to the user’s PATH.
Installing a Specific Version
To install a specific version, pass the release git tag to the install script:
Linux:
curl -fsSL https://feldera.com/install-fda | FDA_VERSION=v0.270.0 bashWindows:
powershell -c "$env:FDA_VERSION='v0.270.0'; irm https://feldera.com/install-fda.ps1 | iex"Custom Installation Directory
Linux:
curl -fsSL https://feldera.com/install-fda | FDA_VERSION=v0.270.0 FELDERA_INSTALL=/opt/feldera bashWindows:
powershell -c "$env:FELDERA_INSTALL='C:\tools\feldera'; irm https://feldera.com/install-fda.ps1 | iex"Using Cargo (macOS and other platforms)
If you have Rust installed, you can install fda using Cargo:
# Install from crates.io
cargo install fda
# Install from GitHub main branch
cargo install --git https://github.com/feldera/feldera fda
# Install from local repository
cd crates/fda
cargo install --path .Shell Completion
Enable command completion for your shell:
Bash:
echo "source <(COMPLETE=bash fda)" >> ~/.bashrcZsh:
echo "source <(COMPLETE=zsh fda)" >> ~/.zshrcFish:
echo "source (COMPLETE=fish fda | psub)" >> ~/.config/fish/config.fishPowerShell:
mkdir -Force (Split-Path $PROFILE)
'$env:COMPLETE="powershell"; (fda | Out-String) | Invoke-Expression; Remove-Item Env:\COMPLETE -ErrorAction SilentlyContinue' >> $PROFILE
. $PROFILEConfiguration
Connecting to Feldera
Configure the Feldera host and authentication using environment variables or command-line arguments.
Environment variables:
export FELDERA_HOST=https://try.feldera.com
export FELDERA_API_KEY=apikey:your_key_hereCommand-line arguments:
fda --host https://try.feldera.com --auth apikey:your_key_here pipelinesCreating API Keys
To create an API key for authentication:
- Log into the Feldera Web Console
- Click on your profile in the top right
- Go to Manage API Keys
- Click Generate new key
Common Commands
List Pipelines
# List all pipelines
fda pipelinesCreate a Pipeline
# Create from a SQL file
fda create my_pipeline program.sql
# Create from stdin
echo "CREATE TABLE example (id INT);" | fda create my_pipeline -sExample SQL file:
-- program.sql
CREATE TABLE orders (
order_id BIGINT NOT NULL PRIMARY KEY,
customer_id BIGINT,
amount DECIMAL(10, 2)
) WITH ('materialized' = 'true');
CREATE MATERIALIZED VIEW total_revenue AS
SELECT SUM(amount) AS revenue FROM orders;Get Pipeline Program
# Get the SQL program for a pipeline
fda program get my_pipeline
# Copy program from one pipeline to another
fda program get pipeline1 | fda create pipeline2 -sConfigure a Pipeline
# Enable storage for a pipeline
fda set-config my_pipeline storage true
# Disable storage
fda set-config my_pipeline storage falseAdd UDF Code
# Add Rust UDF code to a pipeline
fda program set my_pipeline --udf-toml udf.toml --udf-rs udf.rsStart and Stop Pipelines
# Start a pipeline
fda start my_pipeline
# Stop a pipeline
fda shutdown my_pipeline
# Restart a pipeline
fda restart my_pipelinePipeline Status and Statistics
# Get pipeline statistics
fda stats my_pipeline
# View pipeline logs
fda logs my_pipelineTransactions
# Start a transaction
fda start-transaction my_pipeline
# Commit a transaction
fda commit-transaction my_pipelineSupport Bundle
# Download a support bundle for debugging
fda support-bundle my_pipelineDelete a Pipeline
# Delete a pipeline (must be stopped first)
fda delete my_pipelineAd-Hoc SQL Queries
Execute SQL queries on a running or paused pipeline:
# Execute a query
fda exec my_pipeline "SELECT * FROM total_revenue;"
# Execute from stdin
cat query.sql | fda exec my_pipeline -s
# Execute from a file
fda exec my_pipeline -s < query.sqlQuery Examples
# Insert data
fda exec my_pipeline "INSERT INTO orders VALUES (1, 100, 99.99);"
# Query results
fda exec my_pipeline "SELECT * FROM orders WHERE amount > 50;"
# Delete data
fda exec my_pipeline "DELETE FROM orders WHERE order_id = 1;"Interactive Shell
The fda shell provides an interactive environment for working with a pipeline:
# Enter the shell for a pipeline
fda shell my_pipelineInside the shell, you can:
- Execute SQL queries without repeating the pipeline name
- Use shell commands like
start,restart,shutdown - Type
helpfor available commands
Example shell session:
fda> SELECT * FROM total_revenue;
+----------+
| revenue |
+----------+
| 1499.95 |
+----------+
fda> INSERT INTO orders VALUES (2, 101, 149.99);
1 row inserted
fda> SELECT * FROM total_revenue;
+----------+
| revenue |
+----------+
| 1649.94 |
+----------+
fda> help
Available commands:
start - Start the pipeline
restart - Restart the pipeline
shutdown - Shutdown the pipeline
help - Show this help message
exit - Exit the shell
fda> exitCommon Workflows
Create and Run a Pipeline
# Create the pipeline
echo "CREATE TABLE events (id INT, msg VARCHAR);" > program.sql
fda create my_pipeline program.sql
# Start the pipeline
fda start my_pipeline
# Insert data
fda exec my_pipeline "INSERT INTO events VALUES (1, 'Hello');"
# Query results
fda exec my_pipeline "SELECT * FROM events;"
# Stop and delete
fda shutdown my_pipeline
fda delete my_pipelineCopy a Pipeline
# Copy pipeline configuration from one to another
fda program get source_pipeline | fda create target_pipeline -sMonitor a Running Pipeline
# Watch statistics in real-time
watch -n 1 fda stats my_pipeline
# Tail logs
fda logs my_pipeline | tail -fDebug a Pipeline
# Get detailed statistics
fda stats my_pipeline
# View recent logs
fda logs my_pipeline
# Download support bundle
fda support-bundle my_pipelineWorking with Multiple Environments
You can manage multiple Feldera environments by switching the FELDERA_HOST and FELDERA_API_KEY environment variables:
# Development environment
export FELDERA_HOST=http://localhost:8080
fda pipelines
# Production environment
export FELDERA_HOST=https://prod.example.com
export FELDERA_API_KEY=apikey:prod_key
fda pipelines
# Or use command-line arguments
fda --host https://staging.example.com --auth apikey:staging_key pipelinesTips and Best Practices
Use Shell Aliases
Create aliases for frequently used commands:
# Add to ~/.bashrc or ~/.zshrc
alias fda-local='fda --host http://localhost:8080'
alias fda-prod='fda --host https://prod.example.com --auth apikey:prod_key'Script Pipeline Management
Automate pipeline creation and management with shell scripts:
#!/bin/bash
# deploy-pipeline.sh
PIPELINE_NAME="my_pipeline"
SQL_FILE="program.sql"
# Create or update pipeline
fda delete $PIPELINE_NAME 2>/dev/null || true
fda create $PIPELINE_NAME $SQL_FILE
# Enable storage
fda set-config $PIPELINE_NAME storage true
# Start pipeline
fda start $PIPELINE_NAME
echo "Pipeline $PIPELINE_NAME deployed successfully"Combine with Other Tools
Use fda with standard Unix tools:
# Count pipelines
fda pipelines | wc -l
# Find pipelines by name
fda pipelines | grep "production"
# Export pipeline SQL to file
fda program get my_pipeline > backup.sql
# Process query results with jq
fda exec my_pipeline "SELECT * FROM orders;" | jq '.[] | select(.amount > 100)'Troubleshooting
Connection Issues
If you can’t connect to Feldera:
# Verify the host is reachable
curl $FELDERA_HOST/v0/pipelines
# Check environment variables
echo $FELDERA_HOST
echo $FELDERA_API_KEY
# Test with explicit parameters
fda --host http://localhost:8080 pipelinesAuthentication Errors
If you get authentication errors:
- Verify your API key is correct
- Check that the API key hasn’t expired
- Ensure you have the necessary permissions
Command Not Found
If fda is not found after installation:
Linux/macOS:
# Add to PATH
export PATH="$HOME/.feldera/bin:$PATH"
# Or reinstall
curl -fsSL https://feldera.com/install-fda | bashWindows:
Restart your terminal or run:
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","User")What’s Next
- Python Sdk: Learn how to manage pipelines programmatically using the Feldera Python SDK
- First Pipeline: Create a complete data pipeline with SQL tables, views, and connectors
- REST API Overview: Explore the full REST API for programmatic pipeline management