MANY NINJA

Custom software for systems that do more than fit into a template.

Aiden — Many Ninja mascot (click me)

We build the coordinators, control panels, and streaming pipes that real products need — persona sites, identity gates, admin surfaces, realtime video. Each capability listed here maps to a repo you can open and read. Nothing here is agency filler.

scroll ↓
// Preferred Stack

The stack, every layer.

// Our preferred stack

Rust for backends that hold real state. Zig compiled to WebAssembly for browser experiences that feel native. TypeScript + Vue 3 for admin control panels that don't fall over at 40 modules. Postgres for the truth, Redis for the fast path. Lua scripts the integration hub (Ayatori figures). NixOS keeps builds reproducible; Kubernetes runs staging + prod. Every layer talks contracts, not vibes.

// Philosophies

What we stand for.

Seven tenets. Every one has code behind it.

◈ 01 · Data Sovereignty

Own your data + compute.

Every Kishi service is designed to run on your homelab. The platform is named after 起死回生 (kishikaisei — "back from the dead") because it started as a homelab that kept getting rebuilt from scratch and somehow kept working. Cloud is optional; sovereignty isn't.

// labs/docs/rebrand.md
◈ 02 · Communities

Communities deserve their own servers.

Data sovereignty scales up to the group. A fandom, a streamer's audience, a game guild, a podcast community — none of them should have to rent their existence from a Silicon Valley landlord. Kishi is being built so any community with a server and someone who can run docker compose up can host their own identity, streaming, chat, and admin panels on their own metal. Shrink-wrapped self-hosting for the rest of us.

// labs/docs/localdev.md · labs/docs/gitops.md
◈ 03 · No Fear

Don't be scared.

Our people have been building websites since 2000. Hell, one of us beta-tested Napster when it was still being developed on IRC. We've watched trends arrive dressed as the future and leave as tech debt — Perl CGI, Flash, jQuery, LAMP, MEAN, JAMstack, SSR, edge, whatever's next. We're not scared to reach for a new tool when it earns its keep, and not scared to walk away when it doesn't. Rust when a service holds real state. Zig for browser-native. TypeScript + Vue when the DOM cares. Lua when config would be masochism. The stack is a kit, not a religion.

// 25+ years of watching the web change its mind
◈ 04 · Coordinators

Control plane, not data plane.

Chukei wraps MediaMTX instead of reimplementing streaming media in Rust. Ayatori talks to platform APIs via Lua figures instead of pinning per-provider SDKs. Own the coordination; borrow the substrate. Don't reinvent what already works.

// labs/docs/rust-stack-2026.md:183
◈ 05 · Real Repos Only

If it's not a repo, it's not a capability.

Every service listed here is a real repository you can open and read: Torii · Ayatori · Chukei · Hikyaku · Honmaru · Emugate · Bunshin. No mockups, no roadmap-only entries. The company story is the git history.

// labs/docs/rebrand.md
◈ 06 · Identity

One identity, many faces.

A user has one Torii identity but N Bunshin personas — the streaming face (drezdin.com), the professional dev face (janes.co), the game-server admin face, whatever. The site says which persona it wants; the persona knows which face to wear.

// labs/docs/persona.md
◈ 07 · The Retro Web

The web used to be fun.

We remember GeoCities, MySpace layouts, LiveJournal quirks, weird Flash intros, Comic Sans on purpose. The last two decades of the web have been a sterilization campaign — every SaaS site looks like every other SaaS site, agency template stacked on agency template, "innovative disruptive solutions" as far as the eye can see. Many Ninja pushes back. Personality is not a bug. A joke section on a company site is not unprofessional; it's the tell that a real person built the thing.

▶ Watch: the ethos video // personal favorite · linked here on purpose
// Why · Coordinators

Everything real is a coordinator.

Real systems don't have a single service that "does the thing." They have a coordinator — something that holds the shape, sequences the work, fans out to a fleet, and reconciles what came back.

Our platform is built around one such coordinator called Ayatori (綾取り — "cat's cradle") — a headless JSON API with a Lua figure engine. Figures are scripts that walk external protocols (OAuth flows, scraping, webhook fan-in, worker approval) in a way the rest of the platform can consume without ever holding a third-party secret.

What ayatori actually does

Workers announce themselves (POST /workers/announce). Admins approve them from the admin SPA — same shell we ship on every Kishi site. Once approved, a worker binds to Ayatori's operating packet: identity + ryōchi scope + capabilities.

Figures then run on top: kick-oauth.lua, twitch-oauth.lua, reddit-poll.lua. Each figure is 20–60 lines. Bunshin (persona service) calls Ayatori when a user binds an external streaming account — Ayatori runs the figure, records the token, exposes verified status back.

No service holds another service's secrets. That's the shape.

// Services

What Many Ninja can actually ship.

Services list is assembled from real repos in this monorepo and its siblings. Every card here maps to code you can read.

Persona sites

Single-page slide-deck landing pages tied to identity + streaming state. drezdin.com is the reference implementation.

Streaming pipes

RTMP ingest → HLS + WebRTC playback via MediaMTX + chukei (streaming relay). Sub-second glass-to-glass, cam-stream.sh push.

Identity + auth

Torii (gate-auth) — JWT sessions, ForwardAuth for traefik, Discord/Google SSO, session probe endpoint. Powers every admin.

Admin control panels

Vue 3 admin-spa shell — manifest-driven module registry. Every site adopts it with a data/admin.yaml.

Emulation gateway

emu-gate — retro gaming lobbies, worker profiles, cover art library. Real product with browser control panel.

Live WASM artifacts

Zig apps compiled to wasm32-emscripten, mounted via the tessera loader on any Hugo site. Fractal Lab is the current demo.

Discord media bots

rs-disco (Honmaru) — audio bots in Discord voice channels. Live podcast broadcast, per-guild soundboards, TTS + listen streams. Marketing where the audience already gathers.

// Current Work

Live artifacts.

Everything below is running (or was, recently). No mockups.

Live

A neon Galaga-style shooter running as a WebAssembly module. Zig + raylib compiled to wasm32-emscripten via the same tessera loader that powers Fractal Lab — five waves, one triangle, don't let them touch the deck.

ZigWebAssemblyraylibArcade
Full-page game at /games/shooter/ — Aiden included.
// Important Brand Research

The ninja joke had to make it onto the site.

This probably does not belong in a normal agency website. That is part of the point. Many Ninja should feel like a real thing with a point of view, not a sterilized template pretending to have one.

Comic: a ninja holding magnets — 'magnets, how do they work?' — 'too real.'
// magnets · how do they work
Aiden — Many Ninja mascot presented by many.ninja