Portfolio workspace. Production-grade tools that put Claude — and other humans — in physical contact with real systems: one in your browser tab, one inside your kernel, one in everyone's browser at once.
shastra/
├─ yantra/ WebGPU heat-conduction simulator. Drop an STL, watch heat spread.
├─ trishul/ Rust MCP server. Live process / network / USB / syscall view for Claude.
├─ naadi/ Multiplayer WebGPU shader sandbox. CRDT + WebRTC P2P; co-edit one WGSL.
└─ darshan/ Local-first vision agent. Pluggable inference shell. OCR + dashcam in-tab.
| Project | What it is | Stack | Status |
|---|---|---|---|
| yantra | Finite-element heat-conduction solver running entirely in your browser. Drop an STL, pick a material, set hot/cold faces, watch the colormap evolve as steady-state converges. | Astro 5 · Preact 10 · Three.js · WebGPU + WGSL · Bun | shipped |
| trishul | MCP server giving Claude live OS observability — process tree, network listeners, USB topology, host info, and a real eBPF / DTrace / ETW syscall trace. 7 tools, cross-platform. | Rust 2024 · rmcp 1.7 · aya · ferrisetw · sysinfo · netstat2 · nusb | shipped |
| naadi | Multiplayer WebGPU shader sandbox. Co-edit one WGSL fragment shader; every peer's GPU renders the shared scene independently. CRDT-backed, peer-to-peer, zero server bandwidth after handshake. | Astro 5 · Preact 10 · Tailwind v4 · CodeMirror 6 · Loro CRDT · WebRTC · WebGPU + WGSL · Bun | shipped |
| darshan | Local-first vision agent. Drop a file, run a model in your tab. Pluggable inference shell: swappable pipelines (echo, Devanagari OCR, dashcam incident extractor) on swappable backends (Mock, transformers.js, ORT Web, Rust+WASM). Zero cloud. | Astro 6 · Preact 10 · Tailwind v4 · tesseract.js (Hindi) · @huggingface/transformers · onnxruntime-web · Rust → wasm32 · Bun |
shipped |
cd yantra
bun install
bun dev # → http://localhost:4321Then visit /sim?fx=fins. Pick Aluminum, hit Solve, watch the gradient cascade down each fin.
Requires a WebGPU-capable browser (Chrome / Edge / Arc / Brave / Safari 26). Full design + numerics in yantra/README.md.
cd trishul
cargo install --path crates/trishul-mcp
trishul-mcp selftest # every tool should print "ok"Add to your MCP client config (Claude Desktop, Claude Code, Cursor, …):
{ "mcpServers": { "trishul": { "command": "trishul-mcp" } } }Restart the client. Ask Claude: "Anything listening on port 5432?" or "Which processes are doing the most file I/O?"
Cross-platform: 6 of 7 tools work identically on Linux, macOS, and Windows. syscall_trace uses eBPF (Linux) / DTrace (macOS) / ETW (Windows) depending on host. Full install + privilege docs in trishul/README.md, trishul/docs/CLAUDE_CONFIG.md, trishul/docs/PRIVILEGES.md, and trishul/docs/EXAMPLES.md.
cd naadi
bun install
# Terminal A — tiny signaling server (forwards SDP/ICE only)
bun --filter @naadi/signal dev # → ws://localhost:3030/ws
# Terminal B — web app
bun dev # → http://localhost:4322Click Create room, share the resulting /r#<id> link with a second
browser window. Edits flow over WebRTC DataChannel (zero server bandwidth
after handshake); the Loro CRDT keeps everyone in sync; each peer's GPU
renders the shared shader independently. Cursors and nicknames sync as
ephemeral awareness frames. Snapshots persist to per-browser IndexedDB.
A Preset… dropdown above the editor swaps in bundled shaders (cosine
rainbow, plasma, mandelbrot, voronoi, cyberpunk avatar, anime waifu,
minecraft planet, hyperspace, …) and a zoom slider in the Canvas pane
drives a u.zoom uniform read by the bundled presets (default 1.00×,
auto-resets on preset switch).
Requires a WebGPU and WebRTC capable browser — desktop Chrome / Edge /
Arc / Brave / Safari 26+. Full design, security model, and config knobs in
naadi/README.md.
cd darshan
bun install
bun run build:wasm # one-time: compiles the Rust WASM core (requires wasm32-unknown-unknown)
bun dev # → http://localhost:4321Visit /run and pick a pipeline: drop a Devanagari image for OCR + Hindi→English translation,
or a dashcam clip for auto-cut incident highlights. Visit /docs for the full walkthrough —
concepts (pipeline vs. backend, the seam, worker offload), the pipeline × backend matrix,
request flow, and troubleshooting.
The bet: one UI hosts every pipeline on every backend. tesseract.js reads Devanagari +
@huggingface/transformers v4 Opus-MT translates Hindi → English; onnxruntime-web runs
dashcam YOLO; a Rust crate compiled to wasm32-unknown-unknown (no wasm-bindgen) ships as the
seam proof for the future candle-core drop-in. Privacy proof: after first model load, no
network traffic — verify in airplane mode. Full design in
darshan/README.md and /docs in-app.
- Rust 2024 edition ·
rmcp 1.7·aya 0.13(eBPF, Linux) ·ferrisetw 1.2(ETW, Windows) ·tokio·sysinfo·netstat2·nusb·procfs·nix·candle-core(targetwasm32-unknown-unknown, nowasm-bindgen). - Bun 1.3 workspace · Astro 6.4 · Preact 10 · Three.js 0.184 · Tailwind v4 · CodeMirror 6 · Loro CRDT · WebRTC DataChannel · WebGPU + WGSL ·
@huggingface/transformersv4 ·onnxruntime-web·tesseract.jsv7. - Biome 2 + clippy -D warnings lint-clean.
Build-environment caveat for this checkout: /mnt/shared is mounted noexec, so both subprojects symlink their build dirs (target/, node_modules/.bun/) to /tmp to let native build scripts execute. On a normal filesystem you don't need this hack.
shastra/
├─ README.md — this file
├─ .gitignore — workspace-level
├─ yantra/ — see yantra/README.md
│ ├─ apps/web/ — Astro site + WebGPU sim UI
│ └─ packages/{mesh,solver}/ — STL parse/voxelize + CPU+GPU Jacobi solver
├─ trishul/ — see trishul/README.md
│ └─ crates/{trishul-mcp,trishul-ebpf}/
├─ naadi/ — see naadi/README.md
│ ├─ apps/{web,signal}/ — Astro+Preact room UI + Bun signaling server
│ └─ packages/{doc,net,gpu}/ — Loro+CM binding, WebRTC mesh, WebGPU runtime
└─ darshan/ — see darshan/README.md and /docs in-app
├─ apps/web/ — Astro+Preact+Tailwind shell, /run + /docs
└─ packages/{inference-core,inference-core-wasm,pipeline-ocr,pipeline-dashcam,ui-kit}/
MIT, applies to every subproject in this workspace.
Shastra (शस्त्र / शास्त्र) in Sanskrit covers both instrument / weapon and treatise / discipline / body of knowledge. The first sense reads the workspace as a collection of tools (Yantra = instrument, Trishul = trident — both literal shastras). The second covers anything that's a system of practice (a naadi-shastra is the discipline of pulse diagnosis; naadi itself is the pulse / channel / conduit — fitting for a project where shader bytes flow through WebRTC data channels between peers).