Inspiration
Children watch stories. They rarely get to shape them. We believe that the greatest way to learn is by engaging. The Panchatantra was written to be told aloud, with the listener asking "and then what?" We wanted that on the living-room TV: a child, ages about 4 to 10, says what the hero should do in their own words, sees that idea become a painted film, and still arrives at the fable's lesson. The lesson should grow out of what they chose, not something that was written already.
What it does
A child picks a fable from a remote-first shelf. Two are playable today: The Monkey and the Crocodile and The Clever Rabbit and the Lion; more are coming.
At each turning point Tara, the narrator, asks an open question. The child answers in their own words. They can either speak it or type it using the remote or with phone that is paired with the TV. Suggestion chips appear only as a last resort.
Their idea happens on screen. "Give the lion a giant carrot cake so he is happy" puts the cake at the lion's den, and it's still there in the next scene. Every answer changes what happens next, and the story still lands on a moral that grows from the child's choices.
Every story ends, inside a turn budget, on a "The End" card. The card shows the moral and "Your choices made it happen," with the child's own answers.
How we built it
The child's words go to a story server, then to a director, then to video.
TV app: one Fire TV app (a single APK from Fire OS 5 up, screens packaged inside), built for the remote: spatial D-pad focus, a clear focus ring, Back on every screen, Menu for a grown-ups panel, Play/Pause to hear Tara's question again, large type and a 10-foot layout. A Vega OS build compiles, but the Linux Vega Virtual Device can't run WebView apps yet, so it isn't part of the demo.
Director : Claude Haiku 5.5 with structured outputs plays any story card. A card is data: cast, world, milestones, and a turn budget. The director is the layer between what the child says and what happens on the screen, we do prompt filtering, optimization and make sure that the prompt doesn't make the story goes off board, characters remain consistent and finally remember the state of the story.
World : Reactor's H3 Reference Turbo Realtime paints each scene as a short clip, using cast sheets as reference images.
Voice : Fish Audio for Tara ("Warm Storyteller") and for the phone microphone.
Quality : 125 automated tests, including full stories against a mock director and mock world. A persona eval runs simulated children, from kind to rule-breaking, and a second Claude judges each playthrough. Per-run logs keep TV playback health, the device and the director's every turn.
Challenges we ran into
Streaming to India : WebRTC from Delhi to US GPUs failed, so we built our own relay.
Working around flaky internet connection : While testing on weak network connection, we noticed dropouts of about five seconds, this cut off the end of Tara's sentences. The player was jumping to the live edge. A deeper buffer and our own catch-up get playback back to normal about 30 seconds after a 12-second blackout.
Consistency in generated video : The model duplicated characters, leaked one character's traits onto a look-alike, copied a style image's subject into the scene, and drew both ends of a move at once. Each failure became a rule in code, checked against per-clip snapshots.
Sessions that kept billing after the viewer left : The server now ends a story 15 seconds after its TV disappears.
The wait : An answer takes about 20 seconds to become video: the director, the first clip, then the stream buffer. We overlapped Reactor connect with the director and start the story the moment OK is pressed, and we turned the remaining wait into the story: a Kalamkari curtain and a pile of folk-art stickers.
Accomplishments that we're proud of
A child's wild idea really appears in the video, and the story still ends on a moral, on budget. In the persona eval, 18 of 18 playthroughs ended within the turn budget with a moral.
It feels like a book. Kalamkari strips, a carved arch, Tara as storytelling hands, and loading that is part of the tale.
What we learned
Generative video needs a director that knows the model's failure modes. A good prompt is not enough. The rules that held were the ones the code applied to every shot.
On a TV, hiding latency is design work as much as engineering. A curtain and stickers carry a wait that a spinner would make feel broken.
The hard part is the ending. Honoring a silly idea and landing a moral that names what this child actually did are different jobs. Pacing in code solved the first. Crediting the child's choices precisely is still the open problem.
What's next for Kahani
- More fables.
- A parent view of the child's choices and the moral.
- A two-pass ending, so the moral names exactly what the child did, and a faster path from answer to first picture.
- Improving the director based on user feedback
Built With
- amazon-cloudfront
- amazon-ec2
- amazon-web-services
- android-tv
- claude
- fire-tv
- fireos
- fish-audio
- node.js
- preact
- python
- reactor
- vega

Log in or sign up for Devpost to join the conversation.