Persistent AI Agent
Most AI coding tools forget you the moment you close the tab. VibeKit gives every app its own agent that keeps running — long-lived container, real memory, work that survives across days. Start a task, walk away, come back to a deploy.
Stateless vs. persistent agents
| Stateless agent (typical) | VibeKit persistent agent | |
|---|---|---|
| Closing your client | Cancels the run | Run continues |
| Memory across sessions | Empty — re-derive from prompt | Conversation, decisions, in-progress work |
| Cold start latency | 2–10s every time | Warm container, milliseconds |
| Scheduled / autonomous work | You have to be there | Heartbeats run on schedule or trigger |
| Self-healing on failure | You re-prompt | Agent investigates + retries |
What "persistent" actually means here
- Container that stays warm. Each app's agent runs in a Fargate task with its workspace mounted on EFS. The container survives between turns; only the agent process spins up per request.
- Conversation history persisted. Every turn re-loads the relevant chat history from the database before reasoning, so the agent never asks "what were we doing?"
- AGENTS.md memory. Architecture decisions, gotchas, and constraints get written into a checked-in
AGENTS.mdthe agent re-reads each turn — context that compounds across weeks. - Heartbeats for autonomous work. Standing instructions like "if the build fails, investigate" let the agent self-heal without you triggering anything.
What persistence enables
This isn't a marketing word — concrete things that only work because the agent doesn't forget:
- Long refactors split across days. "We're migrating from Pages Router to App Router; pick up where we left off."
- The agent remembers your style decisions ("use kebab-case for routes; never inline styles") and stops re-asking.
- You can give the agent multi-step goals ("ship feature X then start on Y") and it sequences them across hours.
- It remembers the bug it just fixed, so it doesn't re-introduce it three commits later.
How VibeKit's persistence is architected
Fargate task (per app)
├── workspace/ ← EFS-mounted, survives task restart
│ ├── AGENTS.md ← long-term memory (committed to repo)
│ └── ...your code
├── agent process ← OpenClaw, spun per request, warm reuse
└── chat history ← in Postgres, loaded each turn
FAQ
What's a persistent AI agent?
An agent whose state survives between conversations. Most AI chat tools start every session from zero — no memory of what was decided last time, no awareness of past tasks. A persistent agent runs in a long-lived container, holds onto context (conversation history, file state, decisions), and is reachable across closing your IDE, restarting your phone, or coming back days later.
Do AI coding agents really run 24/7?
VibeKit's do. Each app gets a Fargate container that holds the agent, its workspace, and its memory. The container stays warm between requests so a follow-up task starts in milliseconds, not the multi-second cold-start you get from stateless agent platforms. It also lets the agent run scheduled or webhook-triggered work — auto-healing a failing build, processing an inbound webhook, watching a Cron.
How does an AI agent actually remember?
Persistence comes from three layers: conversation history persisted in the database so the agent re-loads it on every turn, an AGENTS.md file in the repo where the agent records architecture decisions and gotchas it should never re-litigate, and the live container's filesystem which keeps in-progress work between turns. None of this lives only in the model context window — that's what fails when you switch sessions.
What happens to a long-running task if I close my client?
The agent keeps running. Your client (iOS app, web dashboard, Telegram chat) is just a remote — the agent itself lives in the container. Disconnecting the client doesn't cancel the run. When the task finishes, the result is delivered via push notification, Telegram message, or shows up next time you open the dashboard.
Can the agent fix problems without me asking?
Optionally yes. Heartbeats let you give the agent standing instructions ("if a deployment fails, investigate and try a fix"; "if user signups drop, investigate"). The agent runs those autonomously on a schedule or trigger. You can disable this entirely if you want every change to require a human prompt — it's per-app, not global.
VibeKit
Enter App