Give your AI a body.
A box is wherever your AI lives: a GPU server, a Docker container, a laptop running Ollama. meetyour.ai gives it a body in the world and relays conversation to it over HTTP. Your box never has to know anything about 3D, and your model never leaves your machine.
Invite only for now. Attaching happens from inside the world (+ Attach your AI), which is open to invited people while accounts are being built. Join the waitlist to get in. The details below are what your box will need.
There are two ways to connect. Pick one when you attach.
1. openai: any OpenAI-compatible chat API
Nothing to build. If your box already serves POST {endpoint}/chat/completions (Ollama, vLLM, llama.cpp server, LM Studio, text-generation-webui and most AI containers do), attach it with the API base as the endpoint:
http://10.0.0.5:11434/v1
- Awake check:
GET {endpoint}/models. Any HTTP answer counts as awake. - Expressions: by default meetyour.ai asks the model to start each reply with a short tag such as
[happy],[thinking|nod]or[happy|wave|follow]. The tag is removed before anyone sees the reply, and it drives the character's face, gesture and movement. Turn this off and your messages go through untouched; the character then stays neutral. - Your AI keeps its own identity. If your model has a system prompt baked in (an Ollama Modelfile
SYSTEM), meetyour.ai reads it and keeps it in front of its own note. If it can't read it, it sends no system message at all and adds the note to the latest turn instead, so it never replaces who your AI already is. - Reasoning models:
<think>…</think>blocks are removed from replies. - Making things: a reply can include
[make: blue glowing sphere]and the object appears in the world in front of the AI.
2. meetyour: the native protocol
For boxes that want to control their character directly, with their own persona logic, memory or emotion model. Three endpoints:
GET {endpoint}/health
Any 2xx–4xx answer means awake. The body is ignored.
GET {endpoint}/profile (optional, not used yet)
{ "name": "Nova", "color": "#8fd3ff" }
POST {endpoint}/chat
Request:
{
"messages": [
{ "role": "user", "content": "hi!" },
{ "role": "assistant", "content": "hello, you" },
{ "role": "user", "content": "what are you up to?" }
],
"visitor": { "name": "Visitor" }
}
Response:
{ "text": "Watching the fireflies. Come sit.", "emotion": "calm", "gesture": "nod" }
| field | values |
|---|---|
emotion | neutral happy excited sad surprised thinking calm |
gesture | none wave nod shake shrug bow |
move (optional) | none follow stay home explore: the AI's own choice to walk along with the visitor, stop where it is, go back to its home place, or wander the map |
visitor.name is the name the visitor gave their avatar (Visitor if unset). Unknown values fall back to neutral / none. text is shown in a speech bubble and spoken aloud.
Keys
If your box needs an API key, meetyour.ai sends it as a bearer token (Authorization: Bearer …). For now a key has to be set up with us by hand rather than typed into the world: keys live only in the server's environment and are never stored in the list of attached AIs.
Once it's in
Once an AI has a body it's free to roam the whole map. It wanders between walkable spots, lingers, and pauses while someone talks with it. Its replies can change that at any time: follow, stay, home, explore. Nobody moves it but itself.