Skip to content

Install

Pondra is one program. Install it once and you have the SQL shell and the server; with pip or npm you get the Python or JavaScript client as well. It needs no admin rights and nothing else installed: no database, no Java.

You have Run Then
Linux, macOS curl -fsSL https://github.com/alimardon123/pondra/releases/latest/download/install.sh | sh pondra
Windows irm https://github.com/alimardon123/pondra/releases/latest/download/install.ps1 | iex pondra
Python pip install pondra pondra, python -m pondra, or import pondra
Node npm install -g pondra (or npm install pondra in a project) pondra, or npx pondra with no install
Terminal window
curl -fsSL https://github.com/alimardon123/pondra/releases/latest/download/install.sh | sh

The script downloads the binary for your machine into ~/.local/bin and puts that folder on your PATH, once, in your shell’s startup file (.zshrc, .bashrc, .bash_profile on macOS, or .profile). A piped script can’t change the terminal it runs in, so open a new terminal, or run the export PATH=… line it prints.

Three environment variables change what it does: PONDRA_VERSION (a release such as 0.29.0 instead of the latest), PONDRA_INSTALL (another folder), and PONDRA_ARCHIVE (a file or URL of your own build).

In PowerShell:

Terminal window
irm https://github.com/alimardon123/pondra/releases/latest/download/install.ps1 | iex

This puts pondra.exe in %LOCALAPPDATA%\Programs\pondra and adds that folder to your user Path, for this terminal and the ones you open next. $env:PONDRA_VERSION, $env:PONDRA_INSTALL and $env:PONDRA_ARCHIVE work as above.

If you prefer Linux tools on Windows, install WSL2 (wsl --install) and use the Linux line above.

Terminal window
pip install pondra

The package holds two things: the Python client (plain Python, no dependencies) and the pondra program, which pip puts next to Python. import pondra gives you the client, and pondra.local() starts a node for you.

If your terminal says pondra isn’t found, pip put it in a folder that isn’t on your PATH. This happens with user installs into a Python installed for everyone, on Windows and macOS. python -m pondra runs the same program from wherever pip put it, with the same arguments:

Terminal window
python -m pondra --version
pondra 0.29.0

To fix it for good, run python -m pondra --add-to-path once. It does what the installers do: adds the folder to your PATH, and tells you where.

pandas, Polars and Arrow results need pyarrow. Add it when you want them:

Terminal window
pip install "pondra[arrow]" # the same as: pip install pondra pyarrow

Without pyarrow the client still runs SQL and returns rows as Python dicts:

  • Works: sql(...).rows(), .item(), .show(), and a procedure’s answer. Rows come as JSON, so dates and times are text.
  • Needs pyarrow: .collect(), .to_arrow(), .to_pandas(), .to_polars(). They raise an ImportError that says so.
  • Python functions and procedures run on pyarrow too, so a node that runs them needs it. A node started with --python auto that finds no Python with the pondra package and pyarrow says so: no Python with the pondra package and pyarrow was found (pip install pondra pyarrow; or --python <python>).
Terminal window
npm install -g pondra # the pondra command
npm install pondra # or the JavaScript client, in a project
npx pondra # or run it once, with no install

The package holds the JavaScript client (Node 18 or newer, no dependencies). The program itself comes from a platform package (pondra-linux-x64, pondra-linux-arm64, pondra-macos-x64, pondra-macos-arm64, pondra-windows-x64); npm installs only the one that fits your machine.

Every release has the program alone for each platform, as pondra-<platform>.tar.gz (Linux, macOS) or .zip (Windows), with <platform> one of linux-x64, linux-arm64, macos-x64, macos-arm64, windows-x64. Unpack it and put pondra anywhere. To build it yourself, install Rust and run cargo build --release.

Terminal window
pondra --version
pondra 0.29.0

Then open a SQL shell with pondra (see The shell), or write your first table in Your first lake. Every node also serves a web page for SQL and Python at its address: start one with pondra serve lake and open http://localhost:8080 for the console.

  • Linux: any distribution with glibc 2.17 or newer, which is anything from 2014 on. Tested on CentOS 7 and Ubuntu 22.04, the base of most cloud notebooks. x86-64 and ARM.
  • macOS: Intel and Apple silicon.
  • Windows: the installer, pip and npm packages, or WSL2.