Installation
Every way to install the forgedb CLI — shell installer, Homebrew, npm/bun, PyPI/uv, Docker, Nix, and cargo — plus the per-ecosystem client SDKs and the substrate crate version matrix.
ForgeDB ships as a single CLI binary, forgedb (plus a bundled forgedb-lsp
language server). Pick whichever channel fits your stack — they all give you the same
tool, version-locked to the crate release.
Prefer the one-liner
Most people should use the shell installer below — no Rust toolchain,
no package manager, macOS and Linux. cargo install is for people who already live in a
Rust toolchain. Every channel installs the same binary.
macOS + Linux only (for now)
The prebuilt channels ship macOS and Linux binaries. The forgedb binary is currently
Unix-only (positional-I/O storage + a Unix-socket write coordinator), so even cargo install fails on native Windows. Windows support (native binary, MSI, winget) is tracked
for a follow-up release — until then, run ForgeDB under WSL2, where it behaves as Linux.
Shell installer#
The fastest path on macOS and Linux — downloads the right prebuilt binary for your platform
and puts forgedb + forgedb-lsp on your PATH:
curl -fsSL https://get.forgedb.dev/install.sh | shThat's an alias for the installer attached to the latest GitHub Release. The direct form (identical bytes) is:
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/hoodiecollin/forgedb/releases/latest/download/forgedb-installer.sh | shHomebrew#
macOS and Linux, via the project tap:
brew install hoodiecollin/tap/forgedbbrew upgrade hoodiecollin/tap/forgedb later. The formula repackages the same release
binary — no Rust toolchain.
npm / bun#
Published under a personal scope (the unscoped forgedb name was unavailable). The package
downloads the matching prebuilt binary on install:
npm install -g @hoodiecollin/forgedb # or: bun add -g @hoodiecollin/forgedb
npx @hoodiecollin/forgedb --help # or: bunx @hoodiecollin/forgedb --helpPyPI / uv#
The PyPI project is hoodiecollin-forgedb (bare forgedb is taken); the installed command
is still forgedb. The wheels are self-contained — they bundle the binary, no build step:
uv tool install hoodiecollin-forgedb # command on PATH: forgedb
pip install hoodiecollin-forgedb
uvx --from hoodiecollin-forgedb forgedb --helpDocker#
A multi-arch image (linux/amd64 + linux/arm64) bundling forgedb and forgedb-lsp,
published on every release. Bind-mount your schema/output dir at /work:
docker run --rm -v "$PWD:/work" ghcr.io/hoodiecollin/forgedb generate all --output ./generated
# also on Docker Hub:
docker run --rm -v "$PWD:/work" hoodiecollin/forgedb --helpThe image repackages the same release binaries as the native install (no runtime Rust toolchain).
Nix (flake)#
Run without installing, or add ForgeDB to your own flake. Builds from source over the
committed Cargo.lock:
nix run github:hoodiecollin/forgedb -- --help # run once
nix profile install github:hoodiecollin/forgedb # install to your profile
nix develop github:hoodiecollin/forgedb # dev shell (rust + tooling)In a flake, add forgedb.url = "github:hoodiecollin/forgedb"; and reference
forgedb.packages.${system}.default.
cargo install (from crates.io)#
The canonical path if you already have a Rust toolchain (≥ 1.85, edition 2024):
cargo install forgedb # add --features lsp to also build forgedb-lsp
cargo install forgedb --force # update laterThis builds the CLI from the published crates and drops forgedb in ~/.cargo/bin.
Direct download#
Each release also attaches raw archives — grab the one for your platform, extract, and put
the binaries on your PATH:
| Platform | Asset |
|---|---|
| Linux x86_64 (glibc) | forgedb-x86_64-unknown-linux-gnu.tar.xz |
| Linux x86_64 (musl) | forgedb-x86_64-unknown-linux-musl.tar.xz |
| Linux aarch64 | forgedb-aarch64-unknown-linux-gnu.tar.xz |
| macOS (Intel) | forgedb-x86_64-apple-darwin.tar.xz |
| macOS (Apple Silicon) | forgedb-aarch64-apple-darwin.tar.xz |
tar -xf forgedb-<target>.tar.xz
sudo mv forgedb forgedb-lsp /usr/local/bin/ # or anywhere on your PATH
forgedb --helpFrom source#
Track the tip of main (or install before a release is cut):
# latest from git
cargo install --git https://github.com/hoodiecollin/forgedb forgedb
# or from a clone
git clone https://github.com/hoodiecollin/forgedb
cd forgedb
cargo build --release # binary at target/release/forgedb
cargo install --path . # or install it onto your PATHBoth build the whole workspace from source, so no crates need to be published first.
Editor extension#
Every install channel above bundles the forgedb-lsp language server beside the CLI. To
light it up in your editor, install the ForgeDB Schema Language extension — .forge
syntax highlighting plus compiler-backed diagnostics, completion, hover, goto-definition,
and rename. It's on the VS Code Marketplace and Open VSX, so it works in VS Code, Cursor,
VSCodium, Windsurf, and code-server:
code --install-extension forgedb.forgedb # or search "ForgeDB" in the Extensions viewThe language features are served by forgedb lsp, so the extension needs the CLI on your
PATH (or set forgedb.path). Full feature list, settings, and per-editor install notes
are on the editor support page.
Generated client SDKs (per ecosystem)#
Installing the CLI is only half the story — the CLI generates a typed REST client for each language on your stack. These aren't installed from a registry; you generate them from your schema and vendor them into your app. One command each:
Node.js / Bun#
forgedb generate node --sdk # → generated/types.ts (bun --sdk is equivalent)Emits a TypeScript client plus a publishable package.json/tsconfig.json. Import
ForgeDBClient from the generated types.ts.
Python#
forgedb generate python --sdk # → generated/python-sdk/forgedb_client.pyA stdlib-urllib client (no runtime deps) plus a pyproject.toml. Import ForgeDbClient
from forgedb_client.
Rust#
forgedb generate rust --sdk # → generated/rust-sdk/ (a reqwest client crate)A reqwest-based client crate — add it as a path/git dependency and use ForgeDbClient.
Go#
forgedb generate go --sdk # → generated/go-sdk/client.goA net/http client package plus a go.mod. Construct with client.NewClient(...).
See the quickstart for end-to-end usage of each, and
forgedb generate for the full generator matrix (including the
in-process native bindings — PyO3, NAPI-RS, and the browser WASM replica).
Substrate crate versions#
A ForgeDB-generated app is not dependency-free: its generated Rust code links a set of
small, schema-agnostic runtime crates published on crates.io (the "substrate").
forgedb init pins these in the generated Cargo.toml, so you don't manage them by hand.
This table records what a given CLI generates against.
| Crate | Version | Role |
|---|---|---|
forgedb-types | 0.3 | Core type system (uuid, timestamp, primitives) |
forgedb-storage | 0.3 | Columnar storage facade (positional-I/O columns) |
forgedb-wal | 0.2 | Write-ahead log (opaque Raw durable-write path) |
forgedb-changefeed | 0.2 | Change-feed broadcast + durable replication broker |
forgedb-auth | 0.1 | Verify-only JWT + tenant cross-check middleware |
forgedb-query-params | 0.1 | REST query-string → generic filter/sort/paginate |
forgedb-compaction | 0.1 | In-process dead-row reclaim (keep-set GC) |
forgedb-txn | 0.1 | MVCC Tier-2 commit sequencer (LSN + conflict detection) |
forgedb-coordinator | 0.2 | MVCC Tier-3 multi-process write coordinator |
These crates know nothing about any specific schema. Every schema-tailored surface — types, tables, queries, filters, relations, API routes — is generated per app at compile time. See core concepts for the identity invariant.
Version lines are independent
Version pins are intentionally not normalized across the substrate — each crate has an independent version line and is bumped only when it changes.
Next#
Once forgedb is on your PATH, walk the full loop in the
quickstart.