INIT / Install

[GET AXIS RUNNING]

Source, AXIS CLI, static PWA, desktop, or Cloudflare® — pick a path. Own the axes. Swap the engine.

Fastest path
git clone …axisbun installbun run axis:installbun run axis:doctor
[ source ]01Full StackRecommended

From Source

Clone the AXIS monorepo, install Bun deps at the root and in packages/cli, then axis:install + axis:doctor. Full stack for the charting PWA — PYNE evaluates Pine Script™; AXIS composes sources, streams, engines, and storage.

  • Workers wrangler.toml is copied by setup when missing.
  • Python 3.10+ for Flask Pro API and axis_pwa_server.py.
  • Requires Bun ≥ 1.2.
  • AGPL v3. Not affiliated with TradingView®, Inc.
[ package ]02CLIRecommended

AXIS CLI (monorepo)

CLI-first operator entry wrapping Bun + Wrangler. Invoke via bun run axis -- <args> or make axis ARGS="…". Optional cd packages/cli && bun link for a local axis bin.

Link bincd packages/cli && bun link && axis --help
Makemake axis ARGS="--help"
  • When using bun run axis setup -- --flag, keep the -- so Bun forwards flags.
  • Env: AXIS_ROOT, AXIS_WORKER_URL, CLOUDFLARE_API_TOKEN, AXIS_CLI_SRC=1.
  • Package name @hoox-sh/axis-cli under packages/cli — install from the AXIS monorepo, not a global bun add.
  • Requires Bun ≥ 1.2.
[ source ]03PWA

Static dist + axis_pwa_server

Production-like static dist served by axis_pwa_server.py on :8081. No Cloudflare® Pages required. Pyodide assets must land in dist/ via bun run build.

  • Serves dist/ on :8081.
  • Pyodide assets must be in dist/ (copied from public/ on build).
  • PWA install works best on Chromium.
[ source ]04Tauri

Desktop shell

Optional Tauri desktop shell wrapping the Vite product UI. Requires Rust and platform webview libraries.

Buildbun run desktop:build
  • Optional Rust + platform webview — see Desktop (Tauri) docs.
[ cloudflare ]05ProductionRecommended

Deploy to Cloudflare®

Deploy the Cloudflare® Worker pynescript-axis (frozen project id). Secrets, Cloudflare® D1, and Cloudflare® KV bindings belong here — then axis:deploy and axis:health.

  • Project id frozen as pynescript-axis — do not rename.
  • Bind API_KEYS (Cloudflare® KV) in prod; Cloudflare® D1 without KV fails closed.
  • ALLOW_OPEN_KEYS "0" in production.
  • REQUIRE_RUN_AUTH "1" to force Bearer on /api/run.
  • Optional Cloudflare® Pages via axis deploy pages / axis deploy all.
[ source ]06Air-gap

Offline-only (Pyodide)

No network after first wheel load. Compose: Source=mock-walk · Stream=mock-poll · Engine=pyodide · Storage=local

Source# Source = mock-walk
Stream# Stream = mock-poll
Engine# Engine = pyodide
Storage# Storage = local
  • First Pyodide boot needs network once (self-hosted wheel from the origin).
Interfaces

[CLI · PWA · WORKER]

CLI for operators, PWA for research, Worker for the Cloudflare® edge.

AXIS CLI

Full ref

install · doctor · setup · deploy · health

Operator entry (@hoox-sh/axis-cli): install, doctor, setup, secrets, deploy, health. Run via bun run axis -- <args> or make axis ARGS="…". After bun link, the axis bin is on your PATH.

Command surface

App + worker + CLI deps

Toolchain + wrangler.toml

axis CLI → pynescript-axis

Live /health (+ optional --oauth)

Product UI

Vite · Solid · :3000

Solid + Vite product UI on :3000. For server-engine fidelity, run Flask Pro API from the sister pynescript repo on :5002. Static dist: bun run build + python3 axis_pwa_server.py.

HMR · proxies /run → :5002

Flask PYNE on :5002

Vite Solid → dist/

Static AXIS on :8081

Edge worker

pynescript-axis

Cloudflare® Worker pynescript-axis — local wrangler, deploy, and /health. Production path proxies Pine Script™ evaluation to EXTERNAL_BACKEND.

wrangler local

axis CLI → pynescript-axis

Live /health (+ optional --oauth)

Install paths6
AXIS version2.0.1
axis install axis deploy → live on edge