Project details

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 AI Assist Kokoro Narration CLI + MCP Server Up to 8K / 120fps No Admin Rights Auto Dependencies Asset Management

What's Included

  • ManimStudio GUI application with a Monaco editor and basedpyright IntelliSense
  • AI Assist — edits the open scene through your signed-in OpenAI Codex CLI or Claude Code CLI, no API key needed
  • Kokoro TTS narration — narrate("...") in a scene is voiced and merged into the video on render
  • Command-line rendering and an MCP server from the same executable
  • Final renders up to 8K at 120fps
Requirements
  • Windows 10+ (64-bit)
  • Python 3.8+ and MiKTeX (or other LaTeX distribution) must be installed
  • No admin privileges needed
  • Internet for initial setup
Quick Install
  1. Install Python 3.8+ and a LaTeX distribution
  2. Get ManimStudio from the Microsoft Store
  3. Setup wizard installs Manim into its own environment
  4. Launch and create!

Technical Specifications

Created by: Yu Yao-Hsing

License: MIT License

LaTeX Engine: MiKTeX (or other LaTeX distribution, installed separately)

Format: MSIX Package, 25 MB

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 / HEVC Apple Pencil → Manim Presentation Mode offlinai_shell (over 100 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 (⌥⌘I)
  • Apple Pencil → Manim — sketch on iPad and get editable Manim source (circles, rectangles, polygons, lines, smooth curves), entirely on-device
  • Presentation mode — full-screen looping playback of the latest render, with a library strip of earlier ones
  • Editor-first workspace with a command palette, and a rebuilt System tab that reads live memory, storage and thermal state from the device
  • 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; HEVC above 4K
  • Custom output size — 9:16, 1:1, 4:5, 16:9 presets
  • Transparent MOV export with real alpha
  • 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, Jupyter notebooks, C, C++, Fortran, pdflatex, and local LLMs — all running on-device, no internet required.

Monaco Editor IntelliSense Jupyter Notebooks Vim Mode SwiftTerm REPL pdflatex llama.cpp Apple Foundation Models Blender bpy Metal GPU PyTorch LoRA Fine-tune AI Assist Chat Visual Debugger JS REPL Image Gen RAG Engine Command Palette Live RAM Sparkline cpu-z / gpu-z 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, also visible in the Files app. 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 — streaming replies that render compiled LaTeX inline, code-aware assists into the editor, and a one-tap scratch file when there's no target. Runs on Apple's Foundation Models (on-device, or Cloud Pro) or any local GGUF; OpenAI, Anthropic and Ollama are optional providers. With an on-device model, 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.

Jupyter Notebooks NEW

Tap an .ipynb and it opens in the editor box as stacked cells, not raw JSON. Per-cell Run on a persistent in-process kernel, inline plots and HTML output, markdown cells with KaTeX, saved back as nbformat v4.

Vim Mode NEW

NORMAL / INSERT / VISUAL / V-LINE modes inside Monaco, toggled from the settings sheet (⇧⌘,) alongside the AI provider and inline completion.

Blender 3D NEW

Full import bpy from python-ios-lib — Cycles and Eevee rendering on the Apple GPU. Saving a .blend opens an interactive 3D preview.

Benchmarks NEW

cpu-z and gpu-z terminal builtins measure the device when run and map the results onto the CPU-Z and Geekbench 6 Compute scales, labelled as estimates.

Libraries Storage Chart NEW

The Libraries tab opens on an interactive ring chart of the whole app's disk footprint — tap a slice to filter the list to it — and every package card shows its true on-disk size.

Languages — all share Monaco + IntelliSense + auto-save

Python 3.14 (BeeWare CPython) C — 3.4k LOC interpreter C++ — 4.2k LOC interpreter Fortran — vendored ofort 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 ~180 Packages

Full Python 3.14 runtime for iOS/iPadOS with about 180 offline packages — including native PyTorch, HuggingFace transformers, Rust tokenizers, and Blender bpy. 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 Blender bpy (Metal) OpenCV ONNX Runtime + CoreML Manim up to 14K 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 NEWwith Parquet
Tropycal NEWtropical cyclones

Machine Learning 8

LibraryVer
PyTorch BETA2.1.0
transformers BETA4.41.2
tokenizers BETA0.19.1
scikit-learn1.9.0
onnxruntime NEW1.26 · CoreML
faiss NEW1.9.0 (CPU)
sentencepiece NEW0.2.0
datasets / evaluate NEW4.0.0 / 0.4.6

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

Visualization 3

LibraryVer
matplotlib3.11.0
Plotly6.6.0
manim BETA0.19.0

145+ mobjects, 73 animations, interactive Plotly HTML charts

Media & Rendering 5

LibraryType
PyAV17 C exts
FFmpeg7 dylibs
Cairo + PangoNative iOS
Pillow11.0.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
Fortranvendored ofort

Tree-walking interpreters for C and C++ — structs, templates, STL; Fortran runs on ofort — modules, allocatable arrays

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.

3D & Vision NEW

LibraryVer
Blender bpy5.3.0
OpenCV4.10

The complete Blender module — Cycles and Eevee rendering on the Apple GPU (Metal) — plus a curated native OpenCV build

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 up to 14K NEW

Memory-safe high-res rendering up to 14K without tripping iOS jetsam — bounded GIF buffer, frames stream to mp4 instead of accumulating, and a RAM estimate that now only warns instead of refusing. h264_videotoolbox up to 4K, hevc_videotoolbox above it. Quality selectable 480p→14K, with 8K, 12K and 14K presets.

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: about 180 packages (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), Android 12, 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 Android 12 AOSP Windows 98 / 2000 wine-staging 11.5 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-staging 11.5, 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.

Android 12 AOSP

A real 64-bit x86-64 AOSP userspace — Android framework, ART, System UI and Launcher3 with touch and keyboard, a writable 2 GiB /data, 1–4 cores. About 591 MB, downloaded once. AOSP, so no Google Play.

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-staging 11.5 (x86-64, 1–8 cores)
  • 64-bit Linux Desktop (Openbox, Dillo, PCManFM, Claude Code CLI)
  • 64-bit Linux — genuine ARM64 Alpine
  • Android 12 AOSP (x86-64, 1–4 cores)
  • 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: ~68 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 26.2+ 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 Blind RIE Metal Acceleration 5 Noise Models Spectral Visualizations App Sandbox

Key Capabilities

  • Side-by-side RMT denoisers — MP thresholding + generalized-covariance oracle (β·δ_a + (1−β)·δ_1)
  • Blind RIE denoising — a third, optimal-shrinkage method that works without a clean reference image
  • 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
  • Built-in “How to use” guide
System Requirements
  • macOS 26.2 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 26.2+ (Apple Silicon)

Type: Native macOS App (Live on the Mac App Store)

Status: Active Development

GPS-location-app icon

GPS-location-app

iOS 18.5+ watchOS 11.5+ App Store CarPlay pending Apple approval

Precision GPS workout tracker for iPhone & Apple Watch. Kalman-filtered location, Velocity Mode for when GPS drops out, HealthKit sync, Live Activities, and route analytics — all in a clean SwiftUI interface, with CarPlay pending Apple approval.

Kalman-filtered GPS Velocity Mode Apple Watch HealthKit Sync CarPlay (pending approval) 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
  • Velocity Mode keeps recording the route when GPS drops out or degrades — see below
  • CarPlay live route map on the car display — pending Apple approval
  • Per-workout route map with split / pace / elevation analytics
  • All workout data stays on your device — no servers, no telemetry

Velocity Mode

When satellite positioning drops out or degrades — a tunnel, an underground car park, a street between tall buildings — Velocity Mode takes over on its own and keeps recording the route. Speed comes from the phone's vibration, read off how the vehicle shakes; direction comes from the gyroscope, accelerometer and magnetometer; GPS supplies only the first point. It reads the vehicle, so the phone needs to be in a pocket, lying flat or on a mount — held in the hand, the speed signal is lost.

Replayed through the current version and checked against GPS over 94 motorcycle and car journeys (28 hours, 511 km GPS could check) and walks on foot: in a car, distance came out −3.4% against GPS (301 of 312 km) and direction was within 30° of GPS 87% of the time (median error 14°); on a motorcycle −13.3% and 74%; on foot +6.8% and 93%.

The method, its accuracy and where it fails are written up in Recording a Route Without Satellites — Speed from Vibration and Direction from Turns on a Smartphone, Measured Against GPS.

Requirements
  • iOS 18.5+ / watchOS 11.5+
  • 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 · Core Motion · 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 Encrypted file transfer Clipboard sync Shutdown Handoff

Key Capabilities

  • HiDPI H.264 stream with Adaptive, 1080p, 2K or 4K quality — up to 3840 px wide at a 60 FPS target
  • 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-digit code — typed, or scanned from the Mac's QR 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; background and resume no longer deliberately drop to 2 or 15 FPS — capture and encoding keep the 60 FPS target, and on return the Mac sends a fresh keyframe
  • Two-way file transfer over the same encrypted session, up to 512 MB a file, each one handed over only after its SHA-256 digest checks out; received files land in an iPad File Manager
  • Opt-in clipboard sync for text and files, and pinch zoom from 100–400% with pointer coordinates translated through the zoom
  • Optional Mac Screen Sharing (VNC) reaches macOS's built-in Screen Sharing without the companion app — legacy VNC is unencrypted, so it is an explicit, user-started choice for a trusted network
  • 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. Scan the Mac's QR code or enter its 16-digit 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.3, free, 7.4 MB, Utilities, rated 4+

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. The outcome is a controlled negative result: every shipped byte is recovered and individually correct, yet the assembled forward pass does not predict text. 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 Reconstructed forward pass Controlled negative result

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
  • A controlled negative result — 42 controlled experiments establish that every shipped byte is recovered and individually correct, yet the assembled forward pass does not predict text; the defect localizes to a residual-axis basis convention that no static statistic can see
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
  • Teardown paper (LaTeX) + condensed FINDINGS.md
  • Python: ANE de-swizzle, LUT-codec cracker, odix parser, weight export, forward pass
  • Running the model is left to Apple's public FoundationModels framework — not part of the repo
  • 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

Target: Apple on-device afmplus-v11.0-ifp (Apple Intelligence, macOS 26/27); devices now run afmplus-v11.2-ifp

Status: Controlled negative result — the assembled forward pass does not predict text

py2bin

python-to-binary v0.9.13 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, all six executed
886/889
Corpus match
Programs byte-identical to CPython, output and exit status
0
Dependencies
Build and runtime both empty; enforced by tests
2,030
Tests
Plus 1,494 of 1,500 randomly generated programs matching CPython exactly, and 359 C and C++ programs matching clang++

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.13 · and how far each is proven
Platformx86-64ARM64
macOSreal Intel Macnative · app
Windowsreal hardware · appARM64 VM
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. macOS x86-64 has run on a real Intel Mac, where Rosetta 2 had passed builds carrying two faults a real Intel CPU refuses outright — a misaligned stack and a stale code signature. Windows ARM64 runs too, on a Windows 11 ARM64 virtual machine — ARM64 instructions on an ARM64 processor — so all six targets have now been executed, none of them under emulation. macOS can also be built as one darwin-universal2 binary holding both slices, which runs on either machine.

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.13 — 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 transcription for iPhone & iPad (iOS 18.5+). Record, import, Share to Whisper, or paste a link to an audio or video file; 99 languages (Chinese in Simplified or Traditional), four models, export to TXT, SRT, VTT, Markdown or JSON.

A new Music tab (beta) turns a description into a song, made entirely on your device with ACE-Step 1.5. On iOS 26 and later, transcriptions, downloads and music keep running when you switch apps.

Download on the App Store
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