An elephant's memory. An agent's mind.
Eleagent records your day from a phone page — five-second video clips with sound and location — and turns it into a memory you and your agents can ask about. It runs entirely on your own Vercel account: no servers or GPUs to run.
-
Capture. Open your deployment on a phone, sign in and recording starts. Clips wait in the browser until they are safely stored, so a dropped connection loses nothing. Clips go straight into a private Vercel Blob store; the server only signs each upload and records it in Postgres.
-
Hearing and seeing. Each minute of a recording is transcribed by speaker (ElevenLabs Scribe v2) and described from its stills and sound (Xiaomi MiMo), both through OpenRouter with zero-data-retention providers. A minute is processed once the recording has moved on, usually within a minute or two, for well under a cent per minute.
-
Sleep. Each night (03:00 in Shanghai by default, see
vercel.json) an agent turns the previous day into long-term memory: Pi, running in a Vercel Sandbox with Eleagent's memory tools. It reads the day's episodes, looks at stills where details matter, creates or enriches people, objects, places, routines and readings, saves the day's events and conversations (with their original words) and links them, and writes a first-person diary with time anchors back to the recorded minutes. It may only finish once every stretch of speech is remembered as a conversation or dismissed with a reason. The sandbox reaches nothing but this deployment: its firewall adds the run's token, and the deployment holds the OpenRouter key./accountcan also sleep today so far. Days follow the time zone the phone reports (TIMEZONEoverrides it). -
Okou. The Okou mark left of the record button is grey until you connect Okou (tap it, or use
/account), then coloured. While recording, say "Hey Okou" or tap the mark: the screen's edge lights up, the mark moves to the middle and you say what you want ("find the brand of these eye drops"). When you stop speaking, Eleagent transcribes the request and hands Okou one message it can act on, with the time and what the camera saw, in one standing Okou conversation. The wake word and a check that it is your voice run on the phone; the first use records your voiceprint (three short samples, kept in the browser). A long press on the mark opens/account.OKOU_MINUTE_CHECK=onalso has a model look for spoken requests in every recorded minute. -
Agents. Your agents read the memory over MCP at
https://<your deployment>/mcp. Add that address in an agent that supports MCP (for example Okou); it sends you to your deployment to sign in and allow access. Access lasts until you disconnect the agent in/account. Today the tools list recordings and clips and hand out short-lived download links, stills from any moment, what was heard and seen in each minute (by time, or searched by words), and the long-term memories and diaries, with the same tools as the self-hosted Eleagent (search_entities,get_entity,list_entity_links,get_subgraph).
Next: recognising who speaks in the recordings (pyannoteAI voiceprints).
The Deploy button creates a private Blob store and a Neon Postgres database and asks for:
| Variable | What it is |
|---|---|
OWNER_PASSWORD |
The password you sign in with. Use a long one. |
OPENROUTER_API_KEY |
An OpenRouter key. Requests require zero-data-retention providers. |
PYANNOTE_API_KEY |
A pyannoteAI key, to recognise who is speaking. |
Sleep starts from a Vercel Cron job; set CRON_SECRET so that only Vercel can start it (without it anyone can, but it
only ever starts a day that is due). SLEEP_MODEL picks the agent's OpenRouter model (default z-ai/glm-5.3-flash). Observations, memories and the diary are written in English; set
MEMORY_LANGUAGE (for example Chinese) to have them written in another language. Speech and visible text always stay
in their own language.
Sign-in and agent access use Better Auth: one owner, no sign-up. Its secret is generated
into the database on the first build; set BETTER_AUTH_SECRET to supply your own, and BETTER_AUTH_URL if the
deployment should answer agents on a custom domain rather than its production vercel.app address.
The database schema is applied on every production build (scripts/migrate.mjs). Preview deployments share the
production database unless Neon gives each one a branch, so they apply migrations only when PREVIEW_DATABASE=branch
is set for the Preview environment: turn on preview branching in the Neon integration first.
npm install
vercel env pull .env.local # DATABASE_URL, Blob credentials and the keys above
npm run dev
npm test && npm run typecheck && npm run lint