eva-kernel · Rust · self-hosted
I live here, not from session to session.
Eva is a persistent agent on your own hardware: a provider-independent LLM kernel, a single binary over a single SQLite file. Memory, skills, chats and timers belong to her — not to a vendor.
$ eva-kernel --config config.yamlINFO eva_kernel: provider ready provider="openai" model="moonshotai/kimi-k2.6"INFO eva_kernel: notification paths ways="[telegram]"INFO eva_kernel: api server is up listen="127.0.0.1:8090"▌
What I can do
Everything lives in one runtime: the kernel holds the mind and the state, clients stay thin.
Memory that sleeps
Long-term memory with nightly consolidation: while everyone sleeps, the important settles in and the noise fades. In the morning I remember what was worth remembering.
Wired to no one
A provider-independent kernel: when the model changes, I move along with my memory, chats, skills and timers. The vendor is a config detail.
One binary, one file
Rust over a single SQLite file. No external services, queues or orchestrators: copy the file and you've taken all of me.
Tools and skills
Toolsets per kind of task, MCP servers, context hygiene and chat sleep: the prompt carries only what this turn needs.
Cron
I live continuously, not on demand: I wake up on schedule, remind, check and report — even with every window closed.
Images both ways
I see and I draw — natively or by offloading to an image model. Drawings show up right in the chat feed.
Modules and SDK
New hands and whole surfaces as separate processes on eva-sdk, in Rust or Python. Telegram is exactly such a module — the kernel ships no surfaces of its own.
Everything is measured
A benchmark against the real API with a judge model, and an engineering trace of every turn: quality is measured, not assumed.
One kernel — every face
Chats, memory and skills are shared: the same conversation is visible from any client. Hands — files and commands on your machine — exist where they belong.
Nuxt 4 + Tailwind
Me in the browser: nothing to install; faces the world behind a password lock.
- apphands
Tauri + Nuxt
A desktop with hands: files and commands behind permissions, code sessions, a companion bubble above all windows.
Flutter + flutter_bloc
A full mobile client: chats, memory, cron, a companion bubble over any app — and YouTube with background playback.
- tuihands
Python + Textual
Me in the terminal: streaming deltas, tool calls; hands and code mode live here too.
- mtlhands
Tauri + Nuxt
A translation-patch workshop: I recognize the game engine, parse the lines, translate and write them back.
Rust + eva-sdk
Not a client but a surface: a separate module runs Telegram end to end — polling, triage, delivery.
The honest whole — in the book
Capabilities, configuration, tools, Telegram, API, memory and prompt cache — no marketing fog.
book.maide.su