ManimStudio icon

ManimStudio

v1.1.4.0

Create stunning mathematical animations with a powerful GUI application. Microsoft Store compatible — no administrator rights required.

Visual Code Editor Live Preview No Admin Rights Auto Dependencies Asset Management

What's Included

  • ManimStudio GUI Application
  • Python 3.12.7 (bundled installer)
  • MiKTeX Basic (officially recommended for Manim)
Requirements
  • Windows 10+ (64-bit)
  • No admin privileges needed
  • Internet for initial setup
Quick Install
  1. Run ManimStudio installer
  2. Auto-installs dependencies
  3. Follow setup wizard
  4. Launch and create!

Technical Specifications

Created by: Yu Yao-Hsing

License: MIT License

LaTeX Engine: MiKTeX

Format: MSIX Package

Platform: Windows 10+

ManimStudio iOS icon

ManimStudio (iOS / iPadOS)

iOS 17+ App Store Python 3.14

A complete offline Python animation studio for iPad and iPhone, built on the Manim engine. Edit Python in a Monaco editor, render to MP4 via Apple VideoToolbox hardware encode, drop in LaTeX with busytex — entirely on-device.

Monaco Editor VideoToolbox H.264 offlinai_shell (~150 builtins) busytex LaTeX SwiftTerm + PTY Fully Offline CJK-aware Text()

What's Included

  • Bundled Python 3.14 stack via python-ios-lib — manim, NumPy, SciPy, matplotlib, Plotly, PyAV, pycairo, pangocairo, busytex (all arm64-iphoneos)
  • Monaco editor in WKWebView — full Python autocomplete, find/replace, multi-cursor, snippets, render-error gutter markers
  • Live symbol-completion index built from introspection of the bundled Python packages
  • Drag-drop image → auto-inserts ImageMobject snippet
  • Pure-Swift Python formatter (⌥⌘L)
  • Reuses the offlinai_shell from CodeBench / BenchCode (rebranded as "ManimStudio shell" at install)
Requirements
  • iOS 17.0+ / iPadOS 17.0+
  • Apple Silicon (arm64-iphoneos)
  • Magic Keyboard supported
  • No internet connection needed
Render Pipeline
  • VideoToolbox H.264 (~5× faster than libx264)
  • Cairo via pycairo compat layer
  • busytex WASM for Tex / MathTex
  • Output to Documents/ — Files app visible

Technical Specifications

Created by: Yu Yao-Hsing

App Store ID: 6764472686 (manimstudio)

Branch: manim_app/ios

Python: 3.14 (iOS arm64)

Editor: Monaco · Terminal: SwiftTerm + PTY

BenchCode icon

CodeBench

iPad · iPadOS · Mac Catalyst Local AI App Store name: BenchCode

A self-contained developer / scientific / AI workstation for iPad and Mac. Python 3.14, C, C++, Fortran, pdflatex, and local LLMs — all running on-device, no internet required.

Monaco Editor IntelliSense SwiftTerm REPL pdflatex llama.cpp Metal GPU PyTorch LoRA Fine-tune AI Assist Chat Visual Debugger JS REPL Image Gen RAG Engine Command Palette Live RAM Sparkline Auto-save
Code Editor VS Code

Real Monaco editor in WKWebView. Python IntelliSense with ~70-entry signature DB, hover docs, and live resolve from the embedded Python daemon for numpy / scipy / sklearn / matplotlib / sympy completions.

Integrated Terminal PTY

SwiftTerm-backed terminal piped through a real PTY into the embedded CPython REPL. Type Python directly, or use POSIX-style builtins like ls, grep, ncdu, top, git clone.

On-Device pdflatex WASM

busytex (pdftex 1.40.25 + xetex + luatex + bibtex8) running in a hidden WKWebView. TeX Live 2023 preloaded into MEMFS plus a 23 MB overlay with PGF/TikZ/beamer, hyperref, mathtools, microtype, fontspec, CJK.

Local LLMs GGUF

llama.cpp as an XCFramework — load any Llama / Mistral / Qwen / Phi GGUF model and chat with streaming tokens. ExecuTorch backends for Apple Core ML / XNNPACK kernel-optimized PyTorch inference.

RAG & Image Gen offline

In-process sentence-embedding + vector store over user-imported text / PDF / markdown. Offline image generation via ExecuTorch-runnable diffusion models. All models stay in the app sandbox — no tokens leave the device.

Workspace System multi-tab

iOS document browser with multiple concurrent workspaces. Auto-save debounced ~600 ms after every keystroke + on run, tab-switch, view-disappear, and app-backgrounding. Tombstone system records deleted files so seeders don't resurrect them.

Metal GPU PyTorch

Monkey-patched torch.matmul / mm / bmm / addmm, F.linear, and SDPA onto Apple's MPSMatrixMultiplication via ctypes → Swift @_cdecl. 2–10× speedup at training sizes. fp32/fp16 native, bf16 via fp32 cast. Autograd-aware via torch.autograd.Function. Auto-installed via sitecustomize.py — zero user code changes.

UI Polish

Live RAM sparkline in the top-right tab bar, command palette (⌘P), editor status bar, tab slide animation, drag-to-select in the terminal (via SwiftTerm doubleTap), and a real Stop button that interrupts the running task.

Training Toolkit

Opt-in _cb_training.py (~12 KB pure Python) ships OOMGuard, MemoryProfiler, KVCache, and TrainingMonitor. Plus a pure-Python safetensors reader (mmap + struct + torch.frombuffer) so transformers.from_pretrained() works without Rust crates.

LoRA Fine-tuning NEW

Train a LoRA adapter on a GGUF base model in-place via llama.cpp's Metal backward kernels (LlamaFinetuner.swift). Closes the train→deploy loop: fine-tune with PyTorch + HF Trainer (Metal bridge for speed), then convert the .pt to a GGUF adapter with a pure-Python writer for fast Metal inference.

JavaScript REPL NEW

js shell builtin backed by Apple's JavaScriptCore (zero bundle cost) — persistent Node-style REPL globals, js -e one-liners, and js script.js file execution, sitting alongside the python builtin.

Editor Performance NEW

IntelliSense engine moved from a 3 s blocking loop to DispatchSource event watch (no held threads), Monaco file opens batched 3 JS round-trips → 1 (~100 ms saved per open), and C/C++/Fortran language providers lazy-register only on first non-Python file.

AI Assist Chat NEW

ChatGPT-style chat panel wired to the local LLM — streaming replies that render compiled LaTeX inline, code-aware assists into the editor, and a one-tap scratch file when there's no target. All on-device; no tokens leave the iPad.

Visual Debugger NEW

Step through Python with a visual debugger wired into Monaco, data Quick Look for inspecting variables / arrays / frames, plus a redesigned Libraries tab, richer System Info, and a hidden debug panel with a native-lib test probe.

Languages — all share Monaco + IntelliSense + auto-save

Python 3.14 (BeeWare CPython) C — 3.4k LOC interpreter C++ — 4.2k LOC interpreter Fortran — 4.1k LOC interpreter
Built On
  • python-ios-lib — runtime layer
  • SwiftTerm — xterm-compatible PTY
  • Monaco Editor — VS Code in WebView
  • busytex — TeX Live 2023 in WASM
  • llama.cpp + ExecuTorch — local AI
Bundle Composition
  • ~1 GB installed app size
  • 791 MB Frameworks (Python, llama, ExecuTorch)
  • 484 MB Python site-packages
  • 254 MB Swift source + LaTeX data

Technical Specifications

Created by: Yu Yao-Hsing

Platforms: iPad · iPadOS · Mac Catalyst

Runtime: Python 3.14 + four interpreters

Editor: Monaco (VS Code) in WKWebView

Status: Active Development

python-ios-lib

Python 3.14 30+ Libraries

Full Python 3.14 runtime for iOS/iPadOS with 30+ offline libraries — including native PyTorch, HuggingFace transformers, and Rust tokenizers. Train on-device. No JIT, App Store safe. Powers CodeBench. Its Metal-accelerated pieces also ship as standalone repos: cairometal and torchmetal.

iOS 17+ Fully Offline App Store Safe PyTorch Native TorchMetal GPU CairoMetal GPU Transformers Rust Tokenizers NumPy Native Manim up to 8K C/C++/Fortran JavaScript REPL dulwich Git Web Stack (Flask · Dash · Streamlit)
Scientific Computing 6
LibraryVer
NumPy2.3.5
SciPy1.15.0
SymPy1.14.0
mpmath1.4.1
PyArrow NEWcolumnar data
Tropycal NEWtropical cyclones
Machine Learning 4
LibraryVer
PyTorch BETA2.1.2
transformers BETA4.41.2
tokenizers BETA0.19.1
scikit-learn40 modules

Native PyTorch (95/95 asserts) + Metal GPU bridge (2–10× speedup) + HuggingFace transformers & Rust tokenizers — train on-device

Visualization 3
LibraryVer
matplotlib3.9.0
Plotly6.6.0
manim BETA0.20.1

145+ mobjects, 73 animations, interactive Plotly HTML charts

Media & Rendering 5
LibraryType
PyAV17 C exts
FFmpeg7 dylibs
Cairo + PangoNative iOS
Pillow12.2.0
offlinai_latexSwiftMath + 33MB texmf
Data & Web 6
LibraryPurpose
PyWebView NEWv5.4.0 — iOS WKWebView
requestsHTTP client
BeautifulSoup4HTML parse
NetworkXGraphs
jsonschemaValidation
PyYAMLYAML
Interpreters 3
LanguageDetails
C~3,661 lines
C++~4,287 lines
Fortran~3,876 lines

Tree-walking interpreters — structs, templates, STL, modules

Web Stack NEW
LibraryPurpose
Flaskweb framework
DashPlotly dashboards
StreamlitML / data apps
Tornadoasync server (6.5.5)
WerkzeugWSGI utils

Run a full Python web app on-device — Jinja2 + MarkupSafe + Fsspec also bundled. See web-stack.md.

Terminal & CLI Utilities 5
LibraryPurpose
richTables, progress bars
tqdmLoop progress
clickCLI framework
PygmentsSyntax highlight (500+)
pydubAudio manipulation
System & Graphics 7
LibraryVer
psutil5.9.8
watchdog4.0.0
moderngl5.12.0
svgelements1.9.6
decorator NEW5.1.1
safetensorsHF deps
huggingface-hubHF deps
Monaco IntelliSense ~70 sigs

Real VS Code editor in WKWebView with Python signature help, hover docs, and live resolve from Python for numpy / scipy / sklearn / matplotlib / sympy.

Expanded LaTeX Bundle 33 MB

Full Latin Modern Type 1 fonts, expl3 (1.3 MB), firstaid, hyphenation, unicode-data, pdftex.map. Math-mode rendering via SwiftMath is unlimited.

Shell Builtins POSIX-y

ncdu with arrow-key navigation, top with Apple-chip detection, git clone via zipball fetch, universal --help interception.

Auto-save ~600 ms

Edits persist to disk on every keystroke (debounced) plus on run, tab-switch, view-disappear, and app-backgrounding. No more lost edits on reopen.

Tombstone System .offlinai_deleted

Files deleted via UI / shell rm / ncdu's d are recorded so starter-script seeders (pip_demo.py, torch_test_all.py) won't re-create them.

Test Coverage 24/24

Full integration test for the transformers stack passes 24/24. PyTorch ships 95/95 correctness asserts. First public iOS builds for PyTorch + tokenizers.

Metal GPU Bridge

_torch_metal_bridge.py patches torch matmul / mm / bmm / addmm, F.linear, and SDPA onto Apple's MPSMatrixMultiplication. 2–10× speedup at training sizes. fp32/fp16 native, bf16 via fp32 cast. Autograd-aware, auto-installed via sitecustomize.py.

Git via dulwich

Real git push / pull / commit via auto-installed dulwich. Plus pywebview FileDialog enum and faulthandler that writes C-level crashes to ~/Documents/log.txt.

CairoMetal NEW

pycairo-compatible 2D vector graphics rendered on the Apple GPU — 246 cm_* functions, stencil-then-cover fills, all 28 compositing operators, IOSurface-backed MTLTexture, pixel-diffed vs real cairo. Cairo has no other Metal backend — to our knowledge this is novel. Standalone repo: cairometal — now pip install cairometal on PyPI (macOS arm64 wheel).

TorchMetal NEW

App-Store-safe per-op Metal/MPS routing for PyTorch inference — matmul, linear, softmax, layer_norm, gelu, attention — size + dtype gated with bit-exact CPU fallback. fp16 matmul is often hundreds of times faster than CPU. Public MPS only, no private symbols. Standalone repo: torchmetal.

Manim 4K/8K NEW

Memory-safe high-res rendering up to 8K (7680×4320) without tripping iOS jetsam — bounded GIF buffer, frames stream to mp4 instead of accumulating, resolution-tiered RAM pre-flight, h264_videotoolbox encode. Quality selectable 480p→8K.

JavaScript REPL NEW

js shell builtin backed by Apple's JavaScriptCore — zero bundle cost. Persistent REPL globals (Node-style), js -e "code" one-liners, and js script.js file execution. See js-engine.md.

Requirements
  • iOS 17.0+ / iPadOS 17.0+
  • Python 3.14 (BeeWare)
  • NumPy 2.x (arm64 wheel)
  • Works completely offline
Quick Start
  1. Copy library folders into site-packages/
  2. Add interpreter .c/.h to Xcode
  3. Import and use
  4. No JIT needed!

Technical Specifications

Created by: Yu Yao-Hsing

License: MIT

Runtime: Python 3.14 on iOS arm64

Libraries: 30+ (native + pure Python)

Platform: iOS 17+ / iPadOS 17+

Bootbox icon

Bootbox

iPad · iPadOS On-Device Emulation No Jailbreak

A boot manager for your iPad. Bootbox is a native iOS app that boots real operating systems — 64-bit Linux (x86-64 and ARM64), classic Windows, graphical desktops — inside a WebKit-hosted emulation stack, with real internet, real multi-core, files in the iOS Files app, and one-tap downloads for every guest image. Everything runs on-device: no servers, no streaming, no jailbreak.

64-bit Linux (x86-64) Genuine ARM64 Windows 98 / 2000 Wine 9.0 Multi-core (up to 8) Real Internet (gVisor) Files App Integration Custom ISO/IMG Import noVNC GUI Boxedwine
64-bit Linux & ARM64 QEMU-Wasm

Genuine aarch64 Alpine (uname -m really reports aarch64) alongside a dual-core x86-64 console guest with Python 3.12, pip/uv, Wine, and real internet.

Classic Windows v86

Windows 98 SE and Windows 2000 Pro boot natively to the desktop via v86, with working internet on Windows 2000 through the NDIS relay.

Real Multi-core up to 8

The x86-64 guest boots dual-core by default with genuine parallel execution (measured 2.0× wall-clock speedup). A cores selector (1/2/4/6/8) sits in the toolbar and UEFI Setup.

4× Lower Idle Power

A patched engine sleeps on a real futex between polls instead of busy-spinning. Measured: idle ~120% → ~32% host CPU, boot time 30s → ~20s, cooler iPad, longer battery.

Python That Works uv

pip install backed by uv with ~24 packages pre-installed and 10-minute download timeouts for large wheels. A baked-in constraints file resolves NumPy to the 1.x line for correctness on the emulated CPU.

Files App Integration iSH-style

A classic NSFileProviderExtension exposes the Bootbox folder in the iOS Files app. Materialized files are hard links — drop in .iso/.img, pull guest exports out, zero-copy.

Real Internet gVisor

Iosnet.xcframework embeds a gVisor userspace TCP/IP stack — the guest's virtio NIC frames travel over a local WebSocket into native sockets. pip, apk, wget, DNS all work, fully on-device.

Your Own Images

Import any .iso/.img via the Files app; paired save-states let a custom install resume in about a second instead of rebooting.

A Boot Experience

GRUB-style boot menu with per-system notes, a classic Aptio-blue UEFI Setup screen, then serial console on the left and GUI on the right — keyboard routing follows your last tap.

Built On
  • QEMU-Wasm — x86-64 (SMP/ACPI) & ARM64 engines
  • v86 — fast 32-bit x86 (Win98 / 2000, i686)
  • Boxedwine — Wine in the browser
  • noVNC — graphical guest output
  • Iosnet.xcframework — gVisor netstack (gomobile)
What It Boots
  • 64-bit Linux + Python & Wine (x86-64, 1–8 cores)
  • 64-bit Linux Desktop (twm + terminal + browser)
  • 64-bit Linux — genuine ARM64 Alpine
  • Windows 98 SE & Windows 2000 Pro
  • Any imported .iso / .img

Technical Specifications

Created by: Yu Yao-Hsing

Platform: iPad · iPadOS (Swift host app + WKWebView)

Networking: gVisor userspace TCP/IP via Iosnet.xcframework

App size: ~60 MB · guest images download on demand, once, and are cached

Status: Active development — build from source (Xcode 16+, Apple developer team)

Generalized Covariance Matrix icon

Generalized Covariance Matrix

ESD Analysis Tool

Advanced eigenvalue spectral distribution analysis for generalized covariance matrices. A powerful research tool for mathematicians and data scientists!

ESD Analysis Matrix Computation Offline Mode Real-time Visualization Export Results

Key Capabilities

  • Analyze eigenvalue distributions
  • Visualize spectral densities
  • Explore random matrix theory
  • Export data for further analysis

Perfect for: Statistical analysis, ML research, quantum mechanics, and financial modeling

System Requirements
  • Windows 10+ (64-bit)
  • Works completely offline
  • One-click installation
Get Started
  1. Install from Microsoft Store
  2. Launch the application
  3. Input your matrix data
  4. Analyze & visualize!

Technical Specifications

Created by: Yu Yao-Hsing

Category: Research & Education

Platform: Windows Store

Type: Desktop App

Status: Active Development

EigenDenoise icon

EigenDenoise

macOS 14+ Metal GPU

Native macOS image denoiser using random matrix theory — the macOS counterpart to Generalized Covariance Matrix. Pure Swift, Metal-accelerated, App Store sandbox-ready.

Marchenko–Pastur Generalized-Cov Oracle Metal Acceleration 5 Noise Models Spectral Visualizations App Sandbox

Key Capabilities

  • Side-by-side RMT denoisers — MP thresholding + generalized-covariance oracle (β·δ_a + (1−β)·δ_1)
  • Differential evolution to find best (a, β) against a clean reference
  • Three interactive spectral tabs — Eigenvalue density, Im(s) vs z, Roots vs β
  • Curated dataset gallery: ORL Faces (400 PGMs), CBSD68 (68 colour), Brain MRI (3,264 T1 slices)
  • Custom URL lists with per-image checkboxes & destination preview
System Requirements
  • macOS 14 (Sonoma) or later
  • Apple Silicon (arm64) — Rosetta supported
  • Metal GPU acceleration (LAPACK fallback)
  • App Sandbox enabled
Tech Stack
  • Pure Swift 5.9+ / SwiftUI / Charts
  • MPSMatrixMultiplication for Gram step
  • LAPACK dsyevd for eigen-decomposition
  • Zero external Swift package deps

Mathematics

For X ∈ ℝ^(p×n) with i.i.d. N(0,1) entries, S_n = (1/n)XXᵀ and T_n = diag(t₁,…,t_p), the generalized sample covariance B_n = S_n T_n. Its Stieltjes transform satisfies a cubic:

a·z·s³ + (a(z − y + 1) + z)·s² + (a + z − y + 1 − y·β·(a − 1))·s + 1 = 0

Limiting density f_{y,H}(z) follows from Cardano's depressed-cubic root; support recovered via bulk-edge function and quartic discriminant for one-interval (Cases 1, 3) vs two-interval (Case 2) topology.

Technical Specifications

Created by: Yao-Hsing Yu

License: MIT

Platform: macOS 14+ (Apple Silicon)

Type: Native macOS App (App Store ready)

Status: Active Development

GPS-location-app icon

GPS-location-app

iOS 17+ App Store Apple Watch CarPlay

Precision GPS workout tracker for iPhone & Apple Watch. Kalman-filtered location, HealthKit sync, Live Activities, CarPlay, and route analytics — all in a clean SwiftUI interface.

Kalman-filtered GPS Apple Watch HealthKit Sync CarPlay Live Activities Route Analytics Workout History Privacy-First

Key Capabilities

  • Record workouts with high-precision GPS, Kalman-filtered for noisy signals
  • Continuous tracking from iPhone + Apple Watch — start one, finish on the other
  • Two-way HealthKit sync — workouts appear in the iOS Fitness / Health apps
  • Live Activity / Dynamic Island shows current distance, pace, and duration
  • CarPlay support for in-car activity display
  • Per-workout route map with split / pace / elevation analytics
  • All workout data stays on your device — no servers, no telemetry
Requirements
  • iOS 17.0+ / watchOS 10+
  • Magic Keyboard supported
  • Location, Motion & Fitness, HealthKit permissions
  • Works fully offline
Get Started
  1. Install from the App Store
  2. Grant location & HealthKit permissions
  3. Pair with Apple Watch (optional)
  4. Tap Start to record a workout

Technical Specifications

Created by: Yu Yao-Hsing

App Store ID: 6764729098

Frameworks: SwiftUI · CoreLocation · HealthKit · ActivityKit · CarPlay

Stack: Pure Swift / SwiftUI

Status: Live on App Store (approved May 18, 2026)

SidecarBridge icon

SidecarBridge

iOS 17+ macOS 14+ App Store iPhone · iPad · Mac End-to-end encrypted

A secure remote window into your Mac, with iPhone and iPad keyboard, trackpad, touch and Apple Pencil input. Everything stays on your own network — the Mac's screen is never published to the Internet.

Encrypted LAN stream Bonjour discovery Peer-to-peer fallback Hardware H.264 Keyboard & trackpad Apple Pencil Picture in Picture Shutdown Handoff

Key Capabilities

  • HiDPI H.264 stream sized from the iPad's own display, 1440–2880 px wide and up to 40 fps on the direct route
  • Three routes tried in order — encrypted local network, Apple peer-to-peer as a nearby fallback, and Apple's own System Sidecar left as a separate, explicit choice
  • Every route does an ephemeral Curve25519 key agreement, then encrypts screen and input with direction-separated ChaChaPoly keys and replay-protected counters
  • Pairing uses a rotating 16-character code proved by role-separated HMACs; a trusted-device credential then lives in the Data Protection Keychain, so it only asks once
  • Encrypted heartbeats check the route every three seconds, show real round-trip latency in both apps, and rebuild stale sessions on their own
  • Picture in Picture keeps the stream alive when you switch iPad apps; the Mac drops to 15 fps in the background and restores quality on return
  • Shutdown Handoff holds a remote session open while the Mac logs out or restarts, and cancels the shutdown rather than leaving the Mac uncontrollable
Requirements
  • macOS 14+ and iOS / iPadOS 17+
  • Both devices on the same local network
  • Local Network permission on both
  • Screen Recording on the Mac
  • No Internet connection needed
Get Started
  1. Install SidecarBridge on the Mac and on the iPhone or iPad — one free listing covers all three
  2. Allow Local Network on both devices
  3. Enter the Mac's one-time pairing code once
  4. Pick In-App Display, or open System Sidecar

Honest limits

Apple publishes no third-party API to start a Sidecar session, and its stream cannot be embedded in another iPad app. So In-App Display and System Sidecar stay two separate, honestly labelled modes rather than one pretending to be the other — and the App Store build opens the public Displays settings instead of loading private frameworks.

The in-app route mirrors the main display rather than creating a true extra one. For a real virtual Retina display, audio and extended desktop, Apple's own Sidecar is still the better path, and the app says so.

Technical Specifications

Created by: Yu Yao-Hsing

App Store ID: 6792298083 — one universal listing for iPhone, iPad and Mac (io.sidecarbridge.mac)

Frameworks: SwiftUI · ScreenCaptureKit · Network.framework · Multipeer Connectivity · CryptoKit · VideoToolbox

Transport: Bonjour + Network.framework on port 45454, Multipeer Connectivity as nearby fallback

Status: Live on the App Store — version 1.0, free, 6.6 MB, Utilities, rated 4+

Typhoon Forecasting AI

Trackformer 1.2 — current release 1.1 deployed here causal: analysis-only inputs 20 leads to +120 h

My own tropical-cyclone model that forecasts a storm's next five days over the western Pacific — track, central pressure, intensity and the wind-field radii. The current release is Trackformer 1.2, which roughly halves track error against 1.1 on a matched benchmark. What this site serves is still Trackformer 1.1: 1.2 takes sea-surface temperature, nearby-storm context and static geography that the live pipeline does not fetch yet, so every forecast and hindcast you see here is a 1.1 run and is labelled as one. The historical Trackformer1.0 ensemble still runs in your browser wherever no 1.1 run covers the initialisation. Live on the Typhoon Tracks explorer, over real JMA forecasts and past storms.

Causal WP route Full storm state 20 six-hourly leads RMW + 34/50/64 kt radii No forecast fields as input In-browser ONNX fallback IBTrACS + NOAA CFS

What it does

  • Trackformer1.1 — the current release. It extrapolates a bounded regional atmospheric state from three analysis snapshots (now, −12 h, −24 h), then integrates the route through a weighted steering ensemble that samples inner, deep-layer, ridge, trough and jet views across the whole western Pacific rather than a small ring around the storm. Nine frozen checkpoints in three groups — three primary intensity experts, three structure experts, three temporal experts — turn a nine-step observed track window plus the current analysis patch into the full state at 20 lead times out to +120 h: position, max wind, central pressure, radius of max wind, and the 34/50/64 kt radii in four quadrants, kept ordered R34 ≥ R50 ≥ R64
  • Causal by construction — this is the point of the release. At inference it sees the observed track and intensity history up to the issue time and analysis fields valid at or before it, and nothing after: no JMA or JTWC forecast track, no positive-lead GFS/GEFS/CFS field, no observation that arrived after the issue time. Every fetched file is checked against the issue time and rejected if it is newer. Later data is used only to score a forecast, never to make one — which is what makes a hindcast on a 1979 storm mean something
  • Intensity is the honest weak spot — the current calibration reference is 16.40 kt test wind MAE across leads and 14.52 hPa test pressure MAE at 120 h. Those are a baseline for the next experiment, not an operational accuracy claim. The published upgrade plan keeps the same data boundary and changes only the target formulation — predict Δwind/Δpressure/Δradius from the observed current state instead of every future absolute value, with separate short/medium/long-lead heads so a 120 h estimate cannot dominate the 6 h behaviour
  • Physics first, network second — the route does not ask a network where the storm goes. It integrates steering from the causal pressure state and lets the experts correct it, and the intensity output is coupled back to the same map: pressure-map minimum, pressure deficit, 850 hPa wind, and the quadrant anomaly extent. That coupling is why the pressure chart and the drawn track cannot disagree with each other
  • Probabilistic, from real members — the shaded cone on a 1.1 run is its own 90% radius over actual route members, and the faint lines are those members — real routes, not draws from a covariance. The historical Trackformer1.0 path instead samples its own 40-dimensional forecast-error covariance (20 leads × 2 axes), where the cross-lead correlation is what keeps sampled routes coherent instead of jagged — a diagonal covariance collapses 90% coverage from 0.82 to 0.20 — tying directly into my random-matrix covariance work
  • Live & honest — it overlays its forecast on the JMA official track for active storms and lets you scrub any past storm to forecast forward against what actually happened. Where a run does not exist the overlay says so and draws nothing, rather than quietly substituting a different model. Clearly flagged experimental — research output, not an operational warning system
The models
  • Trackformer 1.2 — the current release. Adds a land/ocean-context intensity candidate and pooled log-radius structure groups, and widens the route state with coastline, terrain and ocean features. Not deployed here yet: it needs SST, nearby-storm context and static geography the live pipeline does not fetch
  • Trackformer1.1 — what actually runs on this site: causal western-Pacific route integrated from real NOAA analysis fields, plus the intensity and structure heads. Drives the live overlay and the past-storm hindcasts
  • Trackformer1.0 — the historical family. The deployed member is a five-seed int8 ensemble running in your browser via onnxruntime-web, field-free by design, so it can run anywhere in a storm's life
  • 9 frozen checkpoints: 3 primary intensity, 3 structure, 3 temporal experts
  • Track history from IBTrACS v04r01; analysis from NOAA CFSR (1979–2011-03), CFSv2/CDAS (2011-04–) and, where the reanalysis is not published yet, NOAA's GFS f000 archive
  • Storm-held-out chronological train/validation/test split
  • MIT licensed; research output, not an operational forecast
How it runs
  • 1.1: a GitHub Actions job fetches public analysis files, rejects any newer than the issue time, and publishes compact JSON the page reads
  • 1.0: PyTorch → int8 ONNX (~15 MB/seed), lazy-loaded into onnxruntime-web (WebAssembly) only when you ask for it
  • Native units are nautical miles; everything shown publicly is km
  • No API keys, and no storm you look at is sent anywhere

1.2 against 1.1

The canonical comparison from the model card: the same 100 storms, the same earliest test initialisation for each, the same +6 h to +120 h leads and the same issue-time boundary. Track error roughly halves. It is not a clean sweep — the radius outputs come out slightly worse — and it is reported that way rather than by picking the flattering rows.

Matched 100 storms1.11.2
Track error, all leads802.4 km398.4 km
Track error, +120 h1604.3 km808.6 km
Wind MAE, all leads18.1 kt17.6 kt
Pressure MAE, all leads13.0 hPa12.8 hPa
RMW MAE, all leads26.4 km27.0 km
R34 MAE, +120 h69.4 km76.1 km

Technical Specifications

Created by: Yu Yao-Hsing

Category: Research & Education — ML / weather

Frameworks: PyTorch · onnxruntime-web · Plotly

Data: NOAA NCEI IBTrACS · NOAA CFSR / CFSv2 analysis · NOMADS f000 · JMA (verification and display only)

Current release: Trackformer 1.2 — weights on Hugging Face and in the 1.2 release

Status: Trackformer1.1 is what runs the Typhoon Tracks explorer; 1.2 is released but not wired into the live pipeline

Apple On-Device Model Teardown

afmplus-v11.0-ifp reverse engineering sparse MoE paper + code

A complete static reverse-engineering of Apple's on-device foundation model — the sparse Mixture-of-Experts backbone shipped with Apple Intelligence — decoded from its container formats down to a component-validated PyTorch forward pass, plus a working CLI/server over Apple's own runtime. Original research only: the teardown paper and decode code — no Apple weights or tokenizer data are included or distributed. Everything operates on the asset files already present on an Apple device you own.

9.86 B params recovered 4-bit LUT codec ANE 8×128 de-swizzle Container stack decoded From-weights forward pass CLI + OpenAI server

What it found

  • The whole model, as data — all 9.86 B stored weights recovered (100% of the file), the container stack (Cryptex, BBBB, odix, hwx, MPSGraph) fully characterized, and the 4-bit LUT + per-1024 fp16 block-scale weight codec validated against Apple's own coreml2hwx toolchain
  • A corrected “fatal blocker” — the expert-selection router→physical-expert map, long thought unrecoverable, is mathematically irrelevant: the IFP sparse FFN is an ungated, permutation-invariant SwiGLU sum over experts, so no selection map is needed to run it
  • The architecture — 32 full-QKV + 12 KV-reuse attention layers; 12 dense + 32 expert-FFN layers, d=1536, GQA, RoPE, SwiGLU, 219 routable experts/layer with Instruction-Following Pruning. The learned RMSNorm γ turned out to be compile-time folded into the adjacent linears, not missing
  • It runs the real thingafm, a Swift CLI and OpenAI-compatible server over Apple's FoundationModels runtime, alongside a reconstructed PyTorch forward pass. Component-complete, one mechanical assembly step from coherent from-weights text
The model
  • afmplus-v11.0-ifp — sparse MoE, ~9.86 B stored params
  • 12 dense + 32 sparse layers, d=1536, GQA, RoPE, SwiGLU
  • 219 experts/layer; default ifp1_r48 = 10 active + 4 shared
  • Shipped in com.apple.MobileAsset.UAF.FM.GenerativeModels
What's in the repo
  • 15-page teardown paper (LaTeX) + condensed FINDINGS.md
  • Python: ANE de-swizzle, LUT-codec cracker, odix parser, weight export, forward pass
  • Swift: afm CLI + OpenAI-compatible server
  • No weights or tokenizer data — runs on assets already on your own device

Technical Specifications

Created by: Yu Yao-Hsing

Category: Research — reverse engineering / ML systems

Languages: TeX · Python · Swift

Target: Apple on-device afmplus-v11.0-ifp (Apple Intelligence, macOS 26/27)

Status: Component-complete teardown; runs the real model via afm

py2bin

python-to-binary v0.9.11 on PyPI MIT

A compiler and application builder written with nothing but the Python standard library. It turns Python into real machine code — and where it needs C in the middle, it compiles that C with a C compiler it also wrote. No Cython, Nuitka, mypyc, Rust, PyInstaller, assembler, linker, SDK, gcc or clang at any point. Build and runtime dependency lists are literally empty, and the test suite fails if that stops being true.

6/6
Targets
macOS, Windows, Linux — each on x86-64 and ARM64
886/889
Corpus match
Programs byte-identical to CPython, output and exit status
0
Dependencies
Build and runtime both empty; enforced by tests
1,828
Tests
Plus 1,494 of 1,500 randomly generated programs matching CPython exactly

Three ways through

same trade, three answers
compile

Fastest and smallest. No interpreter in the artifact, and none on the machine it runs on.

Speed
0.05 s on a 30M-iteration loop — ~15× CPython
Artifact
32 KB, runs on a bare system
Python
Not needed at all
Accepts
A documented static subset — ints, floats, strings, control flow, your own functions
Packages
None; it will not import one
Integers
64 bits, and they wrap — the one place a program can be quietly wrong rather than refused. Constants are folded exactly, so 2 ** 70 written down is right; a value the program computes past 263 is not. The other two tiers use the interpreter’s own arithmetic and are exact.
compile-capi active

The middle, and where the work is. Python → C driving the CPython C API → machine code, through py2bin's own C compiler.

Speed
0.44 s on that loop; 8 of 27 benchmark rows beat CPython
Artifact
50 KB plus the interpreter it links; starts in 10.1 ms
Python
Yes — linked, or bundled alongside
Accepts
Almost the whole language — 886 of 889 corpus programs
Packages
Anything the interpreter can import
freeze

The most complete. Ships your program beside an interpreter that runs it; nothing is translated, so nothing is faster.

Speed
0.74 s — CPython's, because it is CPython
Artifact
24 MB — an interpreter and every dependency inside
Python
Not needed; it carries one
Accepts
Everything
Packages
NumPy, Torch, a GUI toolkit — all carried inside

Every target reached

v0.9.11 · and how far each is proven
Platformx86-64ARM64
macOSRosetta 2native · app
Windowsreal hardware · appbuilt, never started
Linuxcontainercontainer · app

All six build, and each is held to the same bar — the 889-program corpus compiled for it, every program's output and exit code compared against CPython's. macOS agrees on 886 and differs on 3, inherently: CPython's “Did you mean” needs a live Python frame to suggest from, the repr of a compiled function really is a builtin function's, and "v" is "v" turns on an interning the compiler doesn't reproduce. The cells say how far each target is actually proven, because they differ. “app” marks one a complete third-party GUI application has been built and run on — ManimStudio, 10,100 lines with pywebview, Pillow and manim. Windows x86-64 was run on a physical machine, and that run found four bugs fatal to every Windows program the compiler produced — all in packaging rather than compiled code, none reachable by comparing output, because the program never got as far as a print. Windows ARM64 has never been started: the images are parsed and checked against the format and nothing more, and that is the honest limit of what has been verified.

py2bin make

three questions

Asks which file is the program, which machine it is for, and what shape it should take. Everything else is found or downloaded rather than typed — the other .py files beside it, the libraries it imports, an interpreter for the target, web/ and assets/ if they are there, and an icon if one is.

TargetWhat comes out
macOSA compressed .dmg holding the app
WindowsOne .exe that unpacks itself
LinuxOne executable

Measured against Nuitka, on a real application

lower is better

The application is ManimStudio — also on this page — 10,100 lines with pywebview, Pillow and pyobjc. Built both ways on the same machine, interleaved so drift falls on both equally. Every row is scaled to its own maximum and labelled with the real figure.

py2bin Nuitka
Whole .app
61.2 MB
72.6 MB
Main binary
9.2 MB
29.6 MB
Bare interpreter start
9.5 ms
16.2 ms
Start with the app's imports
52.1 ms
44.8 ms

Compile time: 16.7 s against Nuitka's minutes — left out of the figure above because “minutes” is not a number to scale a bar against. Nuitka wins the fourth row, and the binary is a third the size because Nuitka compiles every module it reaches while this compiles the program and ships its dependencies as bytecode — 7.8 MB of it, which is where most of the 20 MB comes back.

Against Nuitka on getting Python right

78 programs · Nuitka 4.1.3 · CPython 3.14.3

Speed is one question; agreeing with CPython is the other, and here Nuitka is ahead. Seventy-eight whole programs compiled by both, each output compared with what CPython answers for the same source — stdout and exit code, character for character, same machine for all three columns.

Of 78 programspy2binNuitka
answers exactly what CPython answers6976
answers something else62
refuses, with a file:line:col30

It should be ahead: it is a mature project that reimplements CPython's semantics rather than restricting them. Most of the gap is one fact and its consequences — a compiled function here is a builtin_function_or_method, so it has no code object and builds no frame, which is exactly what makes a direct call 2.4× faster and what costs it sys._getframe, tracebacks naming a source line, and inspect.getsource. Two of the differing rows are not a py2bin problem at all: neither compiler reports function for type(f).__name__, and neither has bytecode to hand back. One goes the other way — except* agrees with CPython on 42,100 shapes here and Nuitka answers differently. A corpus covers what somebody thought of, so 1,500 programs drawn at random from the grammar were compiled and compared too: 1,494 match exactly and none is refused, the six that differ all printing a function object. Every number on this page was measured locally rather than read off a green tick: the repository's workflow runs the suite on three operating systems and three Pythons, the corpus on Linux and a cross-build for all six targets, but it has never actually executed — runs queue on that account and never start.

What a build costs

peak RSS of the whole process tree

Run time is what you wait for; build memory decides whether the build runs at all. py2bin writes the machine code, the object file and the container in Python and never starts a C toolchain — Nuitka writes C and hands it to clang. Cold is a first build or a CI runner; Nuitka keeps a ccache, py2bin has no build cache of any kind, so its column is the same either way.

Buildingpy2binNuitka coldNuitka warm
a small program42 MB · 0.1 s557–656 MB · 16.5 s296 MB · 3.7 s
200 functions186 MB · 2.0 s681 MB · 18.1 s423 MB · 4.9 s
1,000 functions602 MB · 7.3 s946 MB · 22.0 s713 MB · 8.1 s
3,000 functions1,567 MB · 21.3 s1,744 MB · 35.5 s1,516 MB · 17.5 s

The advantage narrows as the program grows, and by three thousand functions it is gone. Nothing here streams — the whole module is held as objects, then as C, then as machine code, all at once — so memory grows with the program, while Nuitka's is dominated by a fixed toolchain cost. That toolchain is counted, and it is most of Nuitka's column: on a small program its tree holds clang at 181 MB and ld at 150 MB beside Python's 300; at three thousand functions ld alone holds 1,210 MB. py2bin's tree holds one Python process and nothing else. The artifact starts in 10.1 ms from 49 KB, against CPython's 13.8 ms and a Nuitka --standalone's 15.4 ms from 17.2 MB.

Where it wins, and where it does not

median of 5 · lower is better
py2bin CPython Nuitka
Integer arithmetic
0.050 s
0.084 s
0.095 s
Nested loops
0.022 s
0.035 s
0.042 s
while loop
0.045 s
0.070 s
0.045 s
Function calls
0.065 s
0.023 s
0.020 s
String building
0.025 s
0.011 s
0.009 s

Loops win; calls do not — and the reason is worth stating rather than hiding. Since 3.11 CPython rewrites hot instructions into specialised forms, so a + between two ints never reaches PyNumber_Add. Emitting a generic C-API call for every operation produces exactly the code the interpreter has learned to avoid. So py2bin does what CPython does: a local the analysis can claim is held in a machine register, with an overflow check that falls back to unbounded arithmetic when the value leaves the word — 3 ** 200 compiled this way is still exact. Calls still lose, and will until a calling convention passes a machine integer as one; today an argument is boxed at the call and unboxed inside.

What compile-capi actually does

five stages, all in the package
01
capi_emit
Python AST → C that calls the CPython C API
02
c_preprocessor
#include, macros, conditionals
03
c_frontend
C → py2bin IR, then the optimizer
04
native.x86_64
native.arm64
IR → encoded machine instructions
05
native.formats
Mach-O, PE32+, ELF — written byte by byte

There is no import ctypes anywhere on that path, which a test asserts by compiling in a fresh interpreter and listing what got loaded. ctypes is standard library and would pass an imports-only-stdlib check, but it pulls in subprocess — and there are Pythons, the one on a phone among them, where a subprocess is not something a program may have.

What compiles

each row run against CPython
  • Classes, inheritance, super(), dunders
  • Closures with Python's late binding
  • Decorators, lambdas, *args/**kwargs
  • Unbounded integers — 2 ** 200 exact
  • f-strings, format specs, !r/!s/!a
  • match — values, sequences, mappings, classes, guards
  • Generators: yield, send, yield from
  • async def/await on a real event loop
  • async for and async with
  • finally and with around a suspension
  • A finally that itself yields
  • Walrus, starred and nested unpacking

What it is not

stated up front
  • Not a wheel recompiler — NumPy, Torch and Pillow stay CPython payload, carried rather than translated
  • Not a general Python→native translator — the no-CPython compile tier still takes only a static subset
  • Not a PyInstaller wrapper — every tier has a hard, documented boundary and no silent fallback between them
  • The build machine still needs Python 3.10+; the target does not

A refusal is a file:line:col error, never a silent approximation. A generator becomes a class whose __next__ dispatches on which block to run next — so it is never closed and never finalised by the collector, and cleanup that could silently not happen is refused rather than guessed at.

Specifications

Created byYu Yao-Hsing
CategoryDeveloper tools — compilers / packaging
LanguagePython, standard library only · 51 modules
RequiresPython 3.10+ on the build machine
LicenceMIT
Statusv0.9.11 — compile-capi under active work

Install

From PyPI:

pip install python-to-binary
py2bin make

Or from a clone, with nothing installed at all:

PYTHONPATH=src python3 -m py2bin make

01

Apps & Visualizations

WhisperKit icon
WhisperKit NEW

On-device speech transcription for iPhone & iPad — Whisper models running entirely on Apple's Neural Engine. Record, import audio/video, or pick from Photos; transcripts never leave your device.

Download on the App Store Privacy policy
t-SNE Visualization icon
t-SNE Visualization

Dimensionality reduction tool using t-SNE for high-dimensional data visualization and analysis.

Get it from Microsoft
NeonScribe

A Python-based creative writing and text processing tool with a modern interface.

View project
02

Utilities

Sound Transfer

TCP-based sound transfer tool for streaming audio between devices over a network.

View project
Google Drive Download

A Python tool for downloading files from Google Drive with ease and automation.

View project