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 …axis→bun install→bun run axis:install→bun 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 + Cloudflare® 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, AXIS_PYNE_URL (default https://pynescript.online), 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). Prefer axis setup --prod (remote D1 + API_KEYS KV, fail-closed), then secrets, deploy, keys, and health.

  • ▸Project id frozen as pynescript-axis — do not rename.
  • ▸axis setup --prod binds remote Cloudflare® D1 + API_KEYS KV and never falls back to open keys.
  • ▸Equivalent split: axis setup kv && axis setup d1 --remote.
  • ▸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.
  • ▸PYNE prewarm/usage default host is https://pynescript.online (AXIS_PYNE_URL).
[ 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 · setup --prod · keys · mcp · prewarm

Operator entry (@hoox-sh/axis-cli): install, doctor, setup, secrets, keys, deploy, health, mcp, prewarm, usage. 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

Remote D1 + API_KEYS KV

axis CLI → pynescript-axis

Mint pn_… for Settings / MCP

Live /health (+ optional --oauth)

Default https://pynescript.online

Product UI

Vite · Solid · :3000

Solid + Vite product UI on :3000. For server-engine fidelity, run Flask Pro API from the sister pyne repo (github.com/hoox-sh/pyne) on :5002. Local clone dir may still be pynescript — set PYNESCRIPT_SRC if needed. Static dist: bun run build + python3 axis_pwa_server.py.

HMR · proxies /run → :5002

Flask PYNE on :5002 (PYNESCRIPT_SRC if clone dir is pynescript)

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.28.0
axis install → axis deploy → live on edge