From zero to alive.
Five steps, one JSON.
Everything you need to make an Alive Agent Avatar, carry it out of the studio as one portable file, and put it to work anywhere — your website, your device, your model, your voice. Five first-class types: SVG · ASCII · Sketch Line · Hybrid · Kinetic Typography.
Michael's five steps. That's the whole product.
The spine of NetShow Alive fits in one breath. Here is each step in plain words, with the exact clicks.
Go to the website
Everything happens at voice.netshow.ai — no install, no account, no meter.
The front door shows the living cast; the studios are one click away. Pick the door that fits:
the guided Create studio for characters of any species, the
Face Overlay Lab for a photo-real Hybrid from a portrait
(crew preview — it asks for a crew password today),
or the Universal Stage to watch all five types answer the
same agent side by side.
- Open the front door.
- Choose a studio: Create · Universal Stage · Face Overlay Lab (crew preview — password today).
Make your avatar
Build the character you actually want — person, pet, mascot, dragon, or robot. The Create studio walks you through it top to bottom; the Face Overlay Lab starts from a portrait and gives you every gauge — eyes, brows, lips, mustache, boil, breathing — plus draggable glasses, hats, and necklaces. (The lab is in crew preview today — it asks for a crew password at the door; the Create studio is open to everyone.) Nothing you dial is baked in; it all stays live and editable. Not sure which of the five styles fits? The styles menu shows every lane live — pick there, then come back.
- "What are you creating?" — pick the character category.
- "How do you want to start?" — template, photo, or from scratch.
- "Choose the character structure" then "Choose visual styles".
- "Customize the character" — dials, colors, outfit.
- "Preview live states" — watch it listen, think, and speak.
- Upload a portrait (it lands under YOUR UPLOADS) or pick a cast face.
- Dial the sliders — the dial reference below explains every one.
- Drag accessories where you want them.
- "Save avatar" — the complete look, every gauge, this browser.
Output your JSON
One click turns your avatar into one portable, sealed file: your-name.alive.json.
It is self-contained — a Hybrid even carries its base image inside — and integrity-sealed with a
sha-256 hash, so any surface that wears it can prove it arrived untouched.
- Create studio → "⬇ Download your Alive Agent Avatar (.alive.json)" on the final Save & use step — the guided, open-to-everyone path to the sealed file.
- Universal Stage → "Export packages" row — ↓ svg · ↓ sketch-line · ↓ kinetic.
- Face Overlay Lab → "⬇ Export avatar" — downloads your Hybrid as
name.alive.json. Crew preview today: the lab asks for a crew password first, so start with the two doors above. - ASCII authoring lives on the Semantic Stage.
- The Create studio's other button, "⬇ Studio tuning file (.character.json)", is different on purpose — that one is studio tuning you can keep editing, not the sealed package. The difference matters →
Put it in your device or wherever
Copy the file wherever your page lives and give it a tag to wear. Two lines is the whole
integration — the same tag works inline in a card, as a floating bubble in the corner, or
fullscreen on a kiosk or Raspberry Pi display (mode="kiosk").
<script type="module" src="/alive-site/alive-element.js"></script> <netshow-alive src="/alive-site/your-avatar.alive.json"></netshow-alive>
- Put
your-avatar.alive.jsonnext to your page (same site — why, kindly explained). - Paste the two lines. Size the tag with your own CSS.
- Optional:
mode="floating"for a corner bubble,mode="kiosk"for a display.
Point it to your model and voice, boom done
The avatar has no opinions about your stack. Feed it your model's text stream through the
five-line feeder and the face thinks, speaks, and gestures with the reply; feed your TTS loudness
into el.level(v) and the mouth follows your voice. No key ever touches our servers —
and for a wiring test that costs nothing, the built-in offline agent answers with
agent="local".
import { attachTextAgent } from '/alive-site/alive-adapter-text.js'; const feeder = attachTextAgent(document.querySelector('netshow-alive').session); feeder.userSaid(question); // your user's turn feeder.beginTurn(); // your model is thinking for await (const chunk of yourModelStream) feeder.delta(chunk); feeder.endTurn(); // boom — done
- The model call doesn't happen in the page — it happens in a tiny relay you run. Your
page POSTs the question same-origin to
/turn; the relay calls your model and streams the words straight back into the feeder above. - We ship three, ready to copy, in
/alive-site/samples/— pick your stack: relay-node.mjs (Node 18+, nothing to install), relay.py (Python 3, standard library only), or relay.php (PHP with the stock cURL extension). Each is about a screenful, commented for a first integration. relay-demo.html is the page side — this exact feeder, already wired; copy it next to a running relay (it needs one to answer). The full wiring — the same-origin proxy snippet, persona pinning, the whole contract — is written down on the text-turn wiring page. - Your provider key lives in exactly one place: an environment variable on your own
server (
MODEL_KEY). It's never in the page, never in anything a visitor's browser sends or receives, and never on our servers. Pointing at a model on your own machine instead? Then no key exists anywhere at all.
What a .alive.json is — and what it isn't.
NetShow Alive keeps its files honest. There are exactly two kinds of JSON in your life here, and each has one job.
The sealed, portable package
- Your finished Alive Agent Avatar — one of the five first-class types: SVG, ASCII, Sketch Line, Hybrid, Kinetic Typography.
- Self-contained: a Hybrid carries its base image embedded; nothing else to ship.
- Integrity-sealed: a sha-256 hash over the canonical payload. A package whose declared hash doesn't match is refused whole — no half-loaded faces.
- Stamped with its generator and license, capped at 20 MB.
- Any
<netshow-alive>tag can wear it viasrc=. This is the file the open marketplace lists and sells.
The studio tuning file
- A working file from the Create studio's "⬇ Studio tuning file (.character.json)" — your dials and choices, saved so you can come back and keep editing.
- Not sealed, not integrity-hashed, not meant for
src=. - Think of it as the recipe; the .alive.json is the finished dish.
<netshow-alive> tag only fetches a
package from the same site the page itself lives on — a cross-origin src= is refused before
a single request goes out. That's not a limitation to work around; it's two promises we make your
visitors: their browser never phones a third party just to show a face, and no surprise host can swap
the character out from under your page. Moving an avatar between sites is deliberate and easy: copy the
file. It's one file. That's the point.
<script type="module" src="/alive-site/alive-element.js"></script> <netshow-alive src="/alive-site/demo/kinetic-hotpink.alive.json"></netshow-alive>
See it worn live on the element demo page.
Four recipes. Pick yours.
A living greeter on any page
Serve the Alive files and your package from your own site, paste the two lines, size the tag
with your CSS. Inline in a card, or mode="floating" for the corner bubble.
<script type="module" src="/alive-site/alive-element.js"></script> <netshow-alive src="/alive-site/your-avatar.alive.json"></netshow-alive>
Your origin, your rules
The engine is plain static files — no build step, no service, no meter. Host them yourself and the same two lines work on your domain; the air-gapped bundle even runs with the network cable pulled. Downloadable bundle coming; today ask us and we'll hand it over.
Kiosk tip: mode="kiosk" goes fullscreen — a Pi behind a
shop-window display is a one-tag install.
Where JavaScript can't go
Email clients and most social feeds run no JS — so don't send code, send motion. Record a short loop of your avatar breathing and mid-reply (any screen recorder), save it as a GIF, embed the GIF, and link it to your live page where the real thing answers. Honest, light, and it works everywhere pixels do.
Any model, any voice, no keys here
The five-line feeder (step 5) takes any text stream — your backend,
a CLI agent, an SSE pipe. For voice, feed loudness into el.level(v) and the mouth
tracks your TTS. Where keys live: in your code or, on provider-connected studio surfaces,
in your browser only — dialing the provider directly, billed to you, never stored on or proxied
through NetShow.
Try it right here — this is the real offline local agent, zero network, zero spend:
TRY: "what time is it?" · "hello" · "what is netshow alive?"
The pricing truth.
The character is drawn live in each visitor's browser by the Alive engine — there is no per-minute rendering meter to run, so none exists. What you pay for is what you already own: your model's tokens and your voice provider's audio, billed by them, to you, on your keys. Studios, exports, and the local agent cost nothing to try — no account, no meter. Plans on the pricing page cover hosted embeds, publishing, and team features; marketplace avatars are free or priced by their makers.
What she does when nobody is typing.
An avatar that only moves when spoken to reads as a puppet waiting for a hand. The 3D stage carries a presence layer that keeps a body believable through a silence — and three behaviours that go further than that. All three ship switched off, and one of the three costs money once you turn it on. Here is exactly which is which, because guessing at this is how people get surprised by a bill.
Idle presence
While the stage is on auto and no call is running, she plays from a library of choreographed presence acts — walking the stage, waving, knocking on the inside of the glass, a full 360, a stretch and reset. A rolling energy budget stops big acts chaining back-to-back, per-act cooldowns rate-limit reruns, and the bag never repeats an act until the others have played.
Those acts draw on 45 expressive body verbs — nod, shrug, wave, point, lean, ponder, hop, celebrate and the rest. (The roster file holds 52 keys; seven of them are rig-calibration verbs used to check a body's joints, never performance.)
While you are talking, the pool narrows to the 4 listen-legal picks — a tilt, a nod, a weight shift, an elbow ease. Wandering eyes and stage strolls read as inattention, so they sit that moment out.
If the visitor's OS asks for reduced motion, everything above is
scaled to 0.4 and the agent cannot waive it — and it re-clamps live if they change
the setting mid-session.
Rest — sleep and wake by word
Turned on, the guest can say “quiet time” during a call and she settles: motion quiets, the aware-idle draws are postponed, breath and blink keep going. She is resting, not switched off — there is no statue state.
The mic stays live the whole time. Nothing is muted and no
audio track is touched — which is exactly why any word wakes her, with no wake phrase
needed. That behaviour is not a setting; it cannot be dialled off. Typed and tool input use a
wake word (wake up by default); tapping her rest badge works from either side.
Waking is a small orientation moment — a stretch, a look around, a
re-weight — over a 420 ms arc, against a 900 ms settle. She
will also settle on her own after 3 minutes of quiet in a call, if you leave
that timer on.
Resting and waking never cost anything. This lane cannot start a reply. Its only trace on the wire is a one-line note that rides the turn you were already paying for, so she picks the thread back up instead of restarting.
Held promises
Turned on, “remind me to stretch in 20 minutes” sets a real timer. The grammar is deliberately narrow and digit-anchored — “remind me to X in N minutes” or “remind me in N minutes to X”, seconds, minutes or hours. No digits, no reminder. She does not guess at what you meant.
Up to 12 promises at a time, 200 characters each, from five seconds out to seven days. A chip on the stage shows how many are held; tap it to read them, drop one, or clear the lot.
The timer is set before she confirms it, so when she says she'll remind you, the thing that will actually do it already exists. When it comes due the promise is struck from the list and written to disk before anything else happens — a reminder cannot fire twice, even if the tab dies mid-fire.
Browser notifications are never requested in the background. The one place permission is ever asked is a button you tap yourself, and a notification only goes out when the stage cannot carry the reminder itself — tab hidden, or no call running.
Speaking up on her own
The other two lanes are free. This one is not, and we would rather be blunt about it than clever. Turned on, she may start talking during a quiet moment of a call you already started. She never opens a call, and never speaks on a page you are merely visiting.
When she speaks up on her own, that turn spends your AI & voice budget — same account, same meter as every turn. You set how often; she shows you every time.
Out of the box, if you switch it on: after 90 s of quiet, at most 2 per call and 6 per visit, never twice in a row, one every 2 minutes, each capped at 20 seconds and 300 tokens. Every number is yours to change.
Switching it on is not enough on its own — the guest gets a card naming what she may do, the cost sentence above, and the caps at their real current values, and they have to accept it. Declining leaves her quiet. After that there are three instant offs at all times: tap the speaking-up pill, say the sleep phrase, or flip the toggle. Any of them stops her mid-sentence.
And she has nothing to say by default: with no real reason staged, she does not speak. Silence is the resting state, not a countdown.
Where the switches are today — the honest version. Rest and speak-up are armed from the 3D stage's own presence panel, for that browser session. Held promises are further back: the behaviour is complete and running on the stage, but it has no switch of its own yet, so it is off unless a developer arms it. The separate config door lists these dials and saves them to your agent file, but only the backdrop and the model pointer reach the stage from there so far — everything else is waiting on a seam that has not landed. We would rather write that down than let you find it by turning a knob that does nothing.
All of this is the 3D / VRM stage. The flat engines — SVG, ASCII, Sketch Line, Hybrid, Kinetic Typography — carry their own idle life, but not the rest, reminder or speak-up lanes. The 3D capability card has the per-engine detail and the measured device cost.
Every gauge, in plain words.
The Face Overlay Lab gives you a full mixing desk for a face. This reference is generated from the live help system, so the words here are the same words the studio's help uses — one source, no drift.
Five steps. One JSON. Boom — done.
Make one now, wear it anywhere, and pay no meter ever.