尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证UNSTILL: direct a live place in real time with Visko Orbis
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
The photograph is the first frame.
UNSTILL is a live direction deck for places, built on Visko Orbis. Lock a location or bring your own photograph, then change the hour, the weather, the crowd and the camera while the world keeps running. Orbis carries every change into the live picture at the next chunk, without a cut. Call the shot by voice, keep every run as a take, branch any take into a different future, and share it on a public wall where anyone can replay it.
Made for the Visko Orbis Online Challenge, 2026, by Uzoechi Raphael.查看完整 README ↗The photograph is the first frame.
UNSTILL is a live direction deck for places, built on Visko Orbis. Lock a location or bring your own photograph, then change the hour, the weather, the crowd and the camera while the world keeps running. Orbis carries every change into the live picture at the next chunk, without a cut. Call the shot by voice, keep every run as a take, branch any take into a different future, and share it on a public wall where anyone can replay it.
| Live app | https://unstill-pied.vercel.app |
| Studio | https://unstill-pied.vercel.app/studio |
| The wall of shared takes | https://unstill-pied.vercel.app/wall |
| Replay a live take | https://unstill-pied.vercel.app/studio#take=featured |
| Full walkthrough, every feature filmed live (5:49) | https://unstill-pied.vercel.app/walkthrough.mp4 |
| Demo film | https://unstill-pied.vercel.app/demo.mp4 |
| Unedited live take | https://unstill-pied.vercel.app/live-take.mp4 |
Made for the Visko Orbis Online Challenge, 2026, by Uzoechi Raphael.
To see a recorded run without spending a session, open the featured take, browse the wall, or watch the walkthrough.
A clip is finished the moment it renders. To make it rain, you render another one, and you get another street. A place keeps running. In UNSTILL you make it rain on the street that is already there, let night fall on it, then empty it, in one continuous shot. That only exists with real time generation.
Visko describes Live Models through six pillars. This is where each one shows up in UNSTILL.
| Pillar | In UNSTILL |
|---|---|
| Clocked | The studio listens to chunk_complete and releases directives on chunk boundaries, at most one per settle window, so every change lands in step with the stream |
| Interactive | Hour, weather, crowd, camera and events change a running world. Nothing restarts |
| Full-duplex | Direct by voice: the world keeps generating while you speak, and each phrase becomes a directive on the next beat |
| Stateful | One world persists through every change. Takes record the seed and each beat by chunk, and replay the same world |
| Physical | Branching: replay a take to any beat, then direct a different ending. One shared past, two futures of the same street. The walkthrough shows both side by side, frame matched until the fork |
| Self-evolving | The wall: every take someone posts becomes a starting point anyone can replay and branch, so the body of directed worlds keeps growing |
| Feature | What it does |
|---|---|
| Watches | Three locked worlds: The Corner (film and media), The Aisle (retail), The Bay (robotics and training). Each card in the studio says what the place is for |
| Your photograph | Cropped to 16:9 in the browser, uploaded, and set as the first frame with set_image. A one line description holds Orbis to the photographed place after the first frame |
| Automatic description | When OPENAI_API_KEY or ANTHROPIC_API_KEY is set, the studio describes your photograph for you the moment you choose it (GPT-4o mini or Claude Haiku 4.5 through /api/describe). The line stays editable. The photo is sent once and never stored. Without the key the field is simply typed by hand |
| Direction deck | Hour, weather, occupancy and camera, four event pads per Watch, keyboard shortcuts, and a free beat line |
| Direct by voice | Say "action", "rain, then night", "have the taxi pull up", "hold", "resume", "cut". Parsed in order and released on the beat |
| Continuity compiler | The opening builds the world once. Every prompt after it names one visible change, following the Orbis prompt guide |
| Chunk gated release | A visible queue releases one directive per settle window so morphs never collide |
| Hold and resume | Freeze the world on a chunk and carry on from the same frame, by button or by voice |
| Cue sheets | A scripted sequence per Watch that plays on chunk timing, startable by voice |
| Takes | Seed, opening and every beat stamped with its chunk. Export, import, replay |
| Branching | Fork any take after any beat and direct a different future. Saved as its own take |
| Share a take | One link carries the whole take. Anyone can open it and replay |
| The wall | /wall: takes people chose to publish, each with its world, seed and beats. One click opens it in the studio to replay or branch. Posts are validated and length capped on the server, rate limited, de-duplicated by content, and photo takes stay private |
| Watch log | Every prompt with its chunk and a thumbnail grabbed from the live picture |
| Save HD video | Downloads the session as a 1080p, 30 fps MP4 with the stream's own sound, recorded on Reactor's servers (requestRecording and ), so the viewer's machine does no encoding |
flowchart LR
U[Director: deck, keys, voice] --> C[Continuity compiler]
C --> Q[Chunk gated queue]
Q -->|set_prompt| O[(Visko Orbis on Reactor)]
O -->|WebRTC picture and sound| S[Stage]
O -->|chunk_complete, state| Q
Q --> T[Take: seed and beats by chunk]
T -->|replay, branch, share link| Q
T -->|post| W[/api/wall + Upstash Redis/]
W -->|replay, branch| Q
P[Photo] -->|/api/describe, GPT-4o mini or Claude Haiku| C
P -->|set_image| O
G[Credit guard] -->|cut, release| O
K[Server: /api/token] -->|one hour JWT, Orbis only| O
npm install
cp .env.example .env.local # then add your Reactor API key
npm run dev
npm test # 87 unit tests
Open http://localhost:3000 for the site and http://localhost:3000/studio for the studio.
npm test runs 87 Vitest checks:
| Variable | Required | Notes |
|---|---|---|
REACTOR_API_KEY | Yes | From the Reactor dashboard at reactor.inc. Starts with rk_. Server side only |
KV_REST_API_URL, KV_REST_API_TOKEN | For the wall | Added automatically when you connect Upstash Redis to the project in Vercel (Storage, then Upstash for Redis, free plan). UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN also work. Without them the wall shows a friendly notice |
WALL_ADMIN_KEY | Optional | Any secret string. Lets you remove a post: DELETE /api/wall?id=...&key=... |
ANTHROPIC_API_KEY | Optional | Turns on automatic photo descriptions. From console.anthropic.com. Roughly a tenth of a cent per photo with Haiku |
ANTHROPIC_MODEL | Optional | Defaults to claude-haiku-4-5-20251001 |
OPENAI_API_KEY | Optional | The alternative for photo descriptions, from platform.openai.com. Used when no Anthropic key is set |
OPENAI_MODEL | Optional | Defaults to gpt-4o-mini |
No key ever reaches the browser. app/api/token/route.ts exchanges the Reactor key for a one hour JWT scoped to reactor/visko-orbis-stable and a single session. Sessions start only when someone presses Go live, and Cut, Release GPU or the credit guard ends them.
REACTOR_API_KEY (and optionally OPENAI_API_KEY or ANTHROPIC_API_KEY, and WALL_ADMIN_KEY).app/(site)/ Home, Watches, How it works, Docs, FAQ, the wall
app/studio/page.tsx The studio
app/api/token/route.ts JWT minting
app/api/wall/route.ts The wall: list, post, moderate
app/api/describe/route.ts One line photo descriptions
hooks/use-unstill.ts Session engine: roll, direct, queue, cue, takes, replay, branch, release
hooks/use-credit-guard.ts Idle cut, run cap, parked GPU release
hooks/use-voice.ts Speech recognition to deck actions
hooks/use-server-recording.ts Save HD video
lib/watches.ts Worlds, directive vocabulary, events, cue sheets
lib/compiler.ts Opening and shift prompts
lib/voice.ts Voice phrase parser
lib/take.ts Take storage, export, import, share links
lib/wall.ts Wall post validation and conversion
lib/kv.ts Upstash Redis REST client
lib/featured.ts Featured live take
tests/ Vitest suite
Next.js 16, React 19, @reactor-team/js-sdk, Vitest, Upstash Redis, GPT-4o mini or Claude Haiku 4.5 for photo descriptions, and Visko Orbis Stable served by Reactor.
downloadClipAsFile| Record | Saves the live picture to a .webm file in the browser |
| Go live | One click from the tally or the picture starts a session. Sessions start only on demand |
| Credit guard | A run with nobody directing it is cut after two minutes, with a twenty second warning and a Keep going button. Runs are capped at ten minutes, a GPU left connected after a Cut is released after a minute, and closing the tab ends the session. Takes are always kept |
| Deep links | /studio?watch=aisle opens a Watch, /studio#take=... opens a shared take |
| Site | Home with the walkthrough film, Watches with live Orbis loops of every world, How it works, Docs, FAQ and the wall, each a standalone page |