Manage coding agents inside cloud development environments connected to your repositories
Fully open source under the MIT License.
Instead of editing code locally or inside restricted LLM sandboxes, Eva provisions full development environments where agents can:
• run shell commands • install dependencies • execute tests • build and preview apps • open pull requests
GitHub Repository
↓
Eva
↓
Cloud Sandbox (Daytona)
↓
AI Agent (Claude)
↓
Code Changes → Diff → Pull Request → Preview
- Connect your GitHub repository
- Build a sandbox snapshot with your dependencies
- Run a task (e.g. “fix failing tests”)
- Review the diff and open a pull request
Describe a bug or change and Eva spins up an isolated sandbox to execute it. Tasks run independently so you can launch multiple in parallel.
Persistent cloud development environments with live previews where you and the agent collaborate in real time.
Structured workflows for larger changes. Agents can plan, implement, and verify features across your codebase.
Store PRDs, specs, and context that the agent references during tasks. Keep your requirements close to the work.
Run your test suite in sandboxes automatically. Validate changes before they land without tying up local resources.
Access your connected databases (Convex, Supabase) directly from Claude. Query, inspect, and debug your data without leaving your AI workflow.
- Frontend: Next.js, React, Tailwind CSS
- Backend: Convex
- Sandboxes: Daytona SDK
- Auth: Clerk
| App | Description |
|---|---|
apps/web |
Main dashboard for managing repos, tasks, and sessions |
apps/desktop |
Electron desktop client with local session persistence |
apps/mcp |
MCP server for Claude to query connected Convex databases |
apps/chrome-extension |
Browser extension for quick task execution |
apps/teams-bot |
Microsoft Teams integration |
apps/mobile |
React Native mobile client |
Eva is self-hosted — there is no managed cloud version. You create your own Convex deployment, set up your own Clerk project, and run the app yourself. This gives you full control over your data and infrastructure.
- Node.js
- pnpm
- A Convex project
- A Daytona account
- A Clerk account
| Variable | Required | Purpose |
|---|---|---|
NEXT_PUBLIC_CONVEX_URL |
Yes | Your Convex deployment URL |
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY |
Yes | Clerk publishable key |
NEXT_PUBLIC_ENV |
Yes | development, staging, or production |
| Variable | Required | Purpose |
|---|---|---|
CLERK_JWT_ISSUER_DOMAIN |
Yes | Clerk JWT issuer for auth |
ENCRYPTION_KEY |
Yes | Encryption key for sensitive data |
EVA_DEPLOY_KEY |
Yes | Deploy key for Eva operations |
DAYTONA_API_KEY |
Yes | Sandbox creation and management |
GITHUB_APP_ID |
Yes | GitHub App ID for repo access |
GITHUB_CLIENT_ID |
Yes | GitHub OAuth client ID |
GITHUB_CLIENT_SECRET |
Yes | GitHub OAuth client secret |
GITHUB_PRIVATE_KEY |
Yes | GitHub App private key |
GITHUB_WEBHOOK_SECRET |
Yes | GitHub webhook signature verification |
ENVIRONMENT |
No | Set to production to disable sign-ups |
Add any repo-specific env vars through the repo/team settings in the dashboard.
pnpm install
npx convex dev
pnpm devEva supports Convex and Supabase MCP connections. To add these, add your Convex URL and Supabase URL to the repo or team environment variables in the dashboard.
You need to create a workflow to build your snapshot — this is an implementation detail specific to your codebase. You can use GitHub Actions to automate snapshot creation (e.g. per commit to main, or on a daily schedule). Maximise the resources you allocate so the sandboxes have what they need for sessions.
Your codebase needs the agent-browser skill installed for screenshots or video walkthroughs to be captured.
You may face authentication issues in the preview URL if your auth provider blocks frame ancestors (e.g. AuthKit does this for security). Options:
- Open in a new tab — simplest fix.
- Add the Daytona domain to your auth provider's allowlist and callback URLs, then use the preview URL directly.
- Implement backend auth — if you want the iframe to work, implement a separate login page that doesn't make network requests to your auth provider (e.g. AuthKit), so it renders inside the iframe. Add instructions to your
CLAUDE.mdso the agent knows how to use this flow withagent-browser.
This restriction is not unique to Eva — it's a standard iframe security limitation.
- Codex agent support
- Testing arena for running and comparing agent strategies
- Improved project interview UI/UX