Skip to content

๐Ÿš€ Quick Start

๐Ÿ“ฆ Install

curl -fsSL https://raw.githubusercontent.com/pytgaen/fimod/main/install.sh | sh

Downloads the latest pre-built binary for your platform (Linux x86_64/aarch64, macOS ARM). After installing the binary, the script runs fimod setup all defaults --if-needed for the community registries and the recommended sandbox policy. Already-configured blocks are skipped; missing blocks ask unless you answer with env vars. When installing slim or fast, it may also ask whether to install that variant as the default fimod command.

Options (environment variables):

Variable Default Description
FIMOD_VARIANT standard standard (HTTP/HTTPS via reqwest + rustls + AWS-LC), slim (no HTTP/remote mold loading, smaller), or fast (same features as standard, speed optimized, larger/uncompressed)
FIMOD_SET_DEFAULT prompt For slim/fast: yes also makes that variant available as fimod; no keeps only fimod-slim / fimod-fast
FIMOD_INSTALL /usr/local/bin Install directory (falls back to ~/.local/bin if not writable)
FIMOD_VERSION latest Pin a specific version (e.g. v0.2.1)
FIMOD_SETUP_REGISTRY prompt if needed yes / no answer for community registries
FIMOD_SETUP_SANDBOX prompt if needed yes / no answer for the sandbox policy
FIMOD_SETUP_ALL prompt if needed yes / no shortcut applied to both when granulars are unset

Env vars with curl | sh

Put installer variables on the sh side of the pipe, or export them first. FIMOD_VARIANT=fast curl ... | sh sets the variable only for curl, so the installer still sees the default standard variant.

FIMOD_SET_DEFAULT only controls whether slim / fast is also made available as the fimod command. It does not answer the post-install registry or sandbox prompts; use FIMOD_SETUP_ALL=yes or the granular FIMOD_SETUP_REGISTRY / FIMOD_SETUP_SANDBOX variables for those.

# Install the slim variant to a custom directory
curl -fsSL https://raw.githubusercontent.com/pytgaen/fimod/main/install.sh \
  | FIMOD_VARIANT=slim FIMOD_INSTALL=~/.local/bin sh

# Install the fast variant, make it the default fimod command, and skip setup prompts
curl -fsSL https://raw.githubusercontent.com/pytgaen/fimod/main/install.sh \
  | FIMOD_VARIANT=fast FIMOD_SET_DEFAULT=yes FIMOD_SETUP_ALL=yes sh

# CI-friendly โ€” no prompts, install everything
curl -fsSL https://raw.githubusercontent.com/pytgaen/fimod/main/install.sh \
  | FIMOD_SETUP_ALL=yes sh

Option 1 โ€” via ubi (no script, antivirus-friendly)

ubi is a universal binary installer available on winget (pre-installed on Windows 10/11):

# ๐Ÿ“ฆ 1. Install ubi (one-time, uses winget which is built into Windows)
winget install houseabsolute.ubi

# ๐Ÿ”„ Then restart PowerShell so ubi is found in PATH

# โฌ‡๏ธ 2. Install fimod (classic โ€” includes HTTP support)
ubi --project pytgaen/fimod --matching "fimod-v" --in "$env:USERPROFILE\.local\bin"

# Or slim variant (no HTTP support, smaller binary)
# ubi --project pytgaen/fimod --matching "fimod-slim-v" --in "$env:USERPROFILE\.local\bin"

# Or fast variant (speed optimized, larger uncompressed binary)
# ubi --project pytgaen/fimod --matching "fimod-fast-v" --in "$env:USERPROFILE\.local\bin"

# ๐Ÿ›ค๏ธ 3. Add to PATH (if not already present)
$BinDir = "$env:USERPROFILE\.local\bin"
$UserPath = [Environment]::GetEnvironmentVariable('PATH', 'User')
if ($UserPath -notlike "*$BinDir*") {
    [Environment]::SetEnvironmentVariable('PATH', "$BinDir;$UserPath", 'User')
    $env:PATH = "$BinDir;$env:PATH"
}

# ๐Ÿ—‚๏ธ 4. Install missing registries + sandbox policy
fimod setup all defaults --if-needed

Option 2 โ€” PowerShell script (execution policy / antivirus may block)

โš ๏ธ If your antivirus blocks this script, use Option 1 (ubi) instead โ€” it downloads a signed binary directly from GitHub Releases with no script execution.

Download first, then run:

Invoke-RestMethod https://raw.githubusercontent.com/pytgaen/fimod/main/install.ps1 -OutFile "$env:TEMP\fimod-install.ps1"
& "$env:TEMP\fimod-install.ps1"

Same env var options: $env:FIMOD_VARIANT ยท $env:FIMOD_SET_DEFAULT ยท $env:FIMOD_INSTALL ยท $env:FIMOD_VERSION

The script checks whether the install directory is in your PATH. If not, it displays the commands to add it โ€” copy and run them to make fimod available in new terminals.

โš ๏ธ VCRUNTIME140.dll not found?

fimod requires the Microsoft Visual C++ Redistributable, pre-installed on most Windows systems but missing in minimal environments (Windows Sandbox, fresh server installs).

winget install Microsoft.VCRedist.2015+.x64

Or download directly: vc_redist.x64.exe

cargo install --git https://github.com/pytgaen/fimod
git clone https://github.com/pytgaen/fimod && cd fimod
cargo build --release
# binary at target/release/fimod

Check your install

fimod --version

Installed via cargo or built from source?

The shell installers set up registries and the sandbox policy for you. If you installed another way, run it manually:

fimod setup all defaults --if-needed


๐ŸŽฏ First Try (Hello World)

Let's test fimod with a simple inline expression. Create a sample JSON file or pipe it in:

echo '[{"name": "Alice"}, {"name": "Bob"}]' | fimod s -e 'len(data)'
# Output: 2

๏ฟฝ๏ธ Next steps