AXIS Documentation
Open charting PWA — orthogonal sources, streams, engines, and storage. Own the axes; swap the engine.
This page
Manuals
AXIS is an installable charting PWA (v2.28.0, VERSION / package.json) that treats price, time, and calculation as separable axes. Release history is CHANGELOG.md (online changelog). Sources load history. Streams advance the present. Engines evaluate Pine Script™ via PYNE. Storage keeps your script library. Compose any lawful combination without a proprietary charting host.
Names: AXIS is the chart PWA · PYNE is the Pine Script™ language and runtime · HOOX is the product mesh · Cloudflare® Worker service is worker-axis (https://worker.axis.hoox.sh); pynescript-axis is the retired Pages/Worker project id (CORS/preview alias only). See the glossary.
Pine Script™ and TradingView® are trademarks of TradingView®, Inc. Cloudflare® is a registered trademark of Cloudflare®, Inc. This project is independent and not affiliated with or endorsed by TradingView®, Inc. or Cloudflare®, Inc.
What's new
The current 2.28.0 build — full detail in the changelog:
- The in-browser engine vendors PYNE 0.6.29 — wheel
pynescript-0.6.29-py3-none-any.whl(vendor/andpublic/vendor/, path insrc/engines/catalog.ts). That is what AXIS ships; PyPI may be ahead. Self-hosted Pyodide stays 0.29.5. See engine plugins. - Results overlay, watchlist, and plot chrome — Events filter/search, plot min/max/Δ%, saved-run management; watchlist big-price view + 24h range; Scripts panel line type and Pine
display.*targets. See strategy and results. - Larger grids and footprint — layouts 6 (3×2) and 8 (4×2); Layers → Footprint paints per-candle buy/sell cells from the OHLCV estimate. See charting.
Abstract
AXIS is a charting PWA, not a language rewrite. Language fidelity lives in PYNE. The PWA contributes:
- A unified plugin registry (
source | stream | engine | storage | dataset | component) - A Solid + Vite product UI (chart, editor, results, manager, Workers Manager, on-chain panel) with a mobile-first responsive shell and global keyboard shortcuts (recordable, persisted)
- Optional backends: local Flask, offline Pyodide, Cloudflare® Worker (+ DO/KV/D1/R2 +
/api/onchainproxy) - AXIS CLI + optional Tauri desktop shell for operators
- MCP on the Worker (
POST /mcp) so agents can drive APIs and a connected tab — MCP (agents)
Invariant (AXIS ≠ engine): the shell never embeds a closed interpreter. Evaluation is always an engine plugin.
Product map
| Track | Role | Start here |
|---|---|---|
| End User | Install, compose recipes, research workflows | End User hub |
| Architecture | ADRs, topologies, state namespaces | Architecture |
| Plugins | Contracts and built-in catalogs | Plugins |
| UI | Chart, editor, panels, store | UI |
| Worker | CF Pages + Worker data plane | Worker |
| DevOps | Build, CLI, VPS, CORS, CI | DevOps · AXIS CLI |
| Evaluation | Flask / Pyodide / Worker proxy — not PyneTS, not HOOX execution | Evaluation map |
| PYNE (separate) | Grammar & evaluator | PYNE docs |
Conceptual model
Rendering…
Formal active set:
Active set = { source, stream, engine, storage }
Contract namespace: pynescript.axis.plugins.v1
App state: pynescript.axis.v1
On-chain dataset plugin: defillama-tvl only. Pool candles are source geckoterminal-ohlcv, not a dataset id.
Compose in one glance
| Recipe | Source | Stream | Engine | Storage |
|---|---|---|---|---|
| Offline lab | mock-walk | mock-poll | pyodide | local |
| Desk research | binance-rest | binance-ws | server → Flask | local |
| AXIS at the edge | venue REST | venue WS / DO | server → Worker | cloud |
| On-chain TVL + CEX | binance-rest + DefiLlama dataset | venue WS | any | local |
| DEX pool candles | geckoterminal-ohlcv | mock-poll | any | local |
| Repo library | any | any | any | git |
Full recipes: Compose recipes.
Infrastructure names (do not rename lightly)
| Surface | Value |
|---|---|
| CF Pages project | axis |
| Pages URL | https://axis.hoox.sh |
| CF Worker script | worker-axis |
| Worker URL | https://worker.axis.hoox.sh |
| Health JSON service | worker-axis |
| Product brand | AXIS |
Demo topologies
- Dev: Vite
:3000+ Flask:5002(axis installthenbun run dev) - Desktop:
bun run desktop:dev(Tauri 2) - Static:
bun run build+axis_pwa_server.py:8081 - Worker:
axis dev worker/ wrangler on:8787 - Prod:
axis deploy→ Workerworker-axis(https://worker.axis.hoox.sh) + Pageshttps://axis.hoox.sh
See topologies, AXIS CLI, and local dev.
Offline & agent exports
llm.txt, llms.txt, and the track PDFs are generated outside this package. AXIS package.json has no docs:exports script. The generator is node scripts/docs/generate-exports.mjs in the PYNE repo, and the landing site copies these pages when it builds.
| Kind | Path |
|---|---|
| Full-corpus LLM pack | llm.txt |
| LLM site map (llmstxt.org) | llms.txt |
| Track PDFs (A4) | /exports/axis-*-manual.pdf |