A Laya showcase

A hundred tiny lives.
Every decision made by Laya.

A pixel town where people eat, sleep, work, meet friends and wander. Nobody scripted them. Each choice is a real answer from Laya, an open-source decision engine. Click anyone to see exactly why they chose what they did.

about
70 ms
per warm batch on a laptop GPU
up to
64
people decided in one call
exactly
0
scripted or faked answers
The running town seen from above: houses, a restaurant, a shop, workplaces and parks, with dozens of tiny people walking along paths and the road. The top bar shows live decisions per second, batch size and batch time.

Watching is the product

There is no player, no score and nothing to win. You are an observer, a little like a god looking at an ant farm. You can pause time, step forward one decision at a time, speed the day up, and open any person to look inside their head.

The point is to see decision-making happen: dozens of people choosing at once, each choice backed by real probabilities and a real latency in milliseconds.

  • Five needs per person: hunger, energy, social, fun and money.
  • Seven activities to choose from: sleep, eat, work, socialize, relax, shop, wander.
  • Day and night. At night the town goes to bed on its own, because tired people choose sleep.
  • Live numbers in the top bar: decisions per second, batch size, batch time.
One person selected with a white ring. The inspector panel on the right lists her needs as coloured bars, the exact sentence sent to Laya, a probability bar for each of the seven activities with the chosen one outlined in amber, the decision time in milliseconds, and her recent decision history.

The inspector

Every decision, explained

Click a person and the inspector opens. Nothing is hidden:

  1. their needs, live
  2. the exact sentence the app sent to Laya
  3. Laya's probability for each of the seven options
  4. which option won, and how long the call took
  5. their last ten decisions
“Maya has no money left and needs to earn some. Maya is a bit tired. Other needs are fine.”
→ work 0.96

How it works

From need to footsteps in four steps

  1. 1

    Needs drift

    A Java simulation runs the town. Hunger rises, energy falls, money runs out. Activities restore what they fix.

  2. 2

    One sentence each

    Everyone due for a decision becomes one short sentence that names their strongest needs, in plain words.

  3. 3

    One batch call

    Up to 64 sentences go to Laya's batch endpoint at once. Laya answers each with a choice and a probability per option.

  4. 4

    They walk

    Each person walks to the right place: home, work, the restaurant, the shop or the park. Your browser draws it at ten updates per second.

POST /v1/systemone/batch
{
  "states": ["Maya is starving. Other needs are fine.", "…"],
  "questions": { "next": {
    "type": "choice",
    "instructions": "Choose what this person most needs to do right now.",
    "criteria": { "sleep": "…", "eat": "…", "work": "…", … }
  }}
}

Speed

Real numbers, from a laptop

Measured with an RTX 3060 laptop GPU (6 GB) and Laya's English checkpoint. 64 people decided in a single call:

17×

faster per batch on the GPU than on the CPU.

~70 ms

for a small warm batch, which is what the running town mostly sends.

Honest

The app measures every call. If Laya is slow, you see it. If Laya is down, people just carry on.

Lessons

What we learned about talking to Laya

Laya is a fast classifier, not a chatbot. The words you send decide a lot.

Don't say what they're doing

With “Right now Maya is relaxing” in the text, Laya chose relax for all 100 people, at 0.99. Mentioning the current activity anchors the answer.

Needs first, plainly

“Maya is starving. Other needs are fine.” Strongest need first, everyday words. This scored best in our checks.

Time only at night

Daytime phrases pulled answers toward relax. Saying “It is the middle of the night” is still useful: tired people go to bed.

Run it

One command

You need Docker. With an NVIDIA GPU:

docker compose up --build

Then open localhost:8765 and press Start. The first run builds Laya from source and downloads its model, so give it a few minutes.

No NVIDIA GPU? It still works, just slower:

docker compose -f compose.yaml -f compose.cpu.yaml up --build