FlintTrade
Setup

FlintTrade on Linux (Ubuntu/Debian)

The web-app installer needs nothing pre-installed: no Python, no Node, no git and no make.

curl -fsSL https://flinttrade.vercel.app/web-install.sh | bash

It downloads a pinned, checksum-verified toolchain (uv, Python 3.12, Node and pnpm) into ~/.flinttrade/tools, builds FlintTrade from a managed source checkout at ~/.flinttrade/web-src/FlintTrade, and installs a flinttrade-web launcher at ~/.local/bin/flinttrade-web. No sudo is used. The Electron desktop shell keeps its own checkout at ~/.flinttrade/src/FlintTrade and its own ~/.local/bin/flinttrade launcher, so the two installs never collide and can be run in either order.

If the site is unreachable (repo-direct fallback)

Use this whenever the command above fails: the hosted URL is only a redirect to the script in this repository, and a site outage or a deployment without an immutable source commit answers 503, which curl … | bash would pipe into your shell as an error page. This form fetches the same script straight from GitHub and depends on no deployment:

curl -fsSL https://raw.githubusercontent.com/navaneeshnagarajan/FlintTrade/main/scripts/install/flinttrade-web-install.sh | bash

To read the script before running it, clone the repository and run the file:

git clone https://github.com/navaneeshnagarajan/FlintTrade.git
cd FlintTrade
bash scripts/install/flinttrade-web-install.sh

Uninstall

The plain uninstall removes the application and its launcher integration and keeps your workspace and data:

curl -fsSL https://flinttrade.vercel.app/uninstall.sh | bash

Add --purge to also delete recognised FlintTrade data (workspace, managed source and tools). Purge is irreversible and asks for typed confirmation:

curl -fsSL https://flinttrade.vercel.app/uninstall.sh | bash -s -- --purge

If the site is unreachable, fetch the same uninstaller straight from GitHub — the hosted URL is only a redirect to it:

curl -fsSL https://raw.githubusercontent.com/navaneeshnagarajan/FlintTrade/main/scripts/install/flinttrade-uninstall.sh | bash

Or run the same script from a clone or from the managed source checkout (~/.flinttrade/web-src/FlintTrade for the web app, ~/.flinttrade/src/FlintTrade for the desktop shell):

bash scripts/install/flinttrade-uninstall.sh

Electron installer status

The public download surface distinguishes the source-built web-app install above from Electron-shell installers. It withholds Electron commands and downloads unless one release contains the x64 and ARM64 AppImages, the universal macOS DMG, the Windows x64 NSIS installer, and SHA256SUMS.txt.

For a release that passes that gate, the one-command install is:

curl -fsSL https://flinttrade.vercel.app/install.sh | bash

The script downloads and verifies the canonical .AppImage for your architecture (x64 or arm64), with an automatic FUSE-less self-extraction fallback because modern distros no longer ship libfuse2. It installs an app icon plus a flinttrade command in ~/.local/bin (no sudo), and verifies the app survives launch — the launch log is at ~/.local/state/flinttrade/desktop-launch.log. The script lives at scripts/install/ — read it before piping to a shell if that is your policy (it should be). If the site is unreachable, run it repo-direct with curl -fsSL https://raw.githubusercontent.com/navaneeshnagarajan/FlintTrade/main/scripts/install/flinttrade-install.sh | bash.

Manual .AppImage download

Electron releases publish AppImage only; .deb and .rpm are not part of the new four-installer contract.

To build the installer locally:

pnpm install --frozen-lockfile
python scripts/ft.py desktop-test
python scripts/ft.py desktop-package

make desktop-test and make desktop-package are the POSIX aliases for the same two targets. Generated packages live under packages/apps/desktop/release/electron/.

Source development

Requires Python >=3.12, Node.js >=22.22.2, uv, pnpm 10.34.5, Git, and optionally Rust for core/ticks. Those floors come from [requirements] in flint.toml, which is the single source of truth for them. Ubuntu 22.04's system Python is 3.10 — use 24.04+, a user-space 3.12+, or the one-line installer, which provisions its own interpreter.

pnpm is pinned in the root package.json packageManager field, so install it directly (npm install -g pnpm@10.34.5) — Corepack still works if your Node bundles it, but Node dropped Corepack in 25.0.0, so it is an optional accelerator rather than a prerequisite.

To run the built web app from source:

git clone https://github.com/navaneeshnagarajan/FlintTrade.git
cd FlintTrade
uv sync
pnpm install
pnpm --filter @flinttrade/terminal build
python scripts/ft.py start

Then open http://127.0.0.1:5100. The terminal build step is not optional: the backend serves the UI only when packages/apps/terminal/dist/index.html exists, so skipping it leaves you with an API and no interface.

To run the Vite dev server alongside the backend instead:

python scripts/ft.py setup
python scripts/ft.py dev

Then open http://localhost:5173. python scripts/ft.py <target> works on every OS; make <target> is the POSIX alias for the same targets.

Server services (advanced)

infra/scripts/setup-production.sh is the Ubuntu 24.04 production installer (Python >= 3.12). A checkout of this repository is only the script source; the installer provisions /opt/flinttrade itself. The unit is hardcoded to that prefix (ProtectHome=true). There is no directory override.

The installer creates /opt/flinttrade/.venv, installs the hashed requirements.lock into it, builds packages/apps/terminal/dist with the pinned pnpm, and provisions the credential-vault master_password as www-data so a non-interactive python -m flinttrade_core.app can start and serve the UI. It chowns only the runtime workspace, data and log paths to www-data. The git checkout and .venv stay root-owned so infra/scripts/deploy.sh can update them. See the systemd notes.

sudo bash infra/scripts/setup-production.sh
sudoedit /opt/flinttrade/.env
sudo systemctl start flinttrade

Edit /opt/flinttrade/.env with sudoedit only for server-only fallback values that cannot be supplied through the app UI. Then complete Setup in the app at http://127.0.0.1:5100. The installer builds the terminal; the backend serves that UI only when packages/apps/terminal/dist/index.html exists.

Raspberry Pi OS Bookworm (system Python 3.11) is not this path — use the one-line installer above, or infra/install/install-native.sh.

On this page