Agentic end-to-end testing platform. Create and run automated tests for web, iOS, and Android applications using natural language. Tests execute on real devices and browsers with AI-powered element detection, assertions, and self-healing.
apps/
api/ Hono + tRPC API server (port 4000)
ui/ Vite + React 19 SPA (port 3000)
engine-web/ Playwright-based web test execution
engine-mobile/ Appium-based mobile test execution (iOS + Android)
docs/ Astro Starlight documentation site
jobs/ Background jobs (reviewer, notifier)
packages/
ai/ AI primitives - model registry, vision, point/object detection
db/ Prisma schema + generated client (PostgreSQL)
types/ Shared Zod schemas and TypeScript types
engine/ Platform-agnostic execution agent core
device-lock/ Redis-based distributed device locking
blacklight/ Shared UI component library (Radix + Tailwind + CVA)
try/ Go-style error handling (fx.runAsync, fx.run)
storage/ S3 file storage
logger/ Sentry-based logging
analytics/ PostHog server-side analytics
k8s/ Kubernetes helpers
workflow/ Temporal workflow definitions
utils/ Shared utilities
corepack enable to use the version pinned in package.json)git clone https://github.com/autonoma-ai/autonoma.git
cd agent
pnpm install
PostgreSQL and Redis run via Docker Compose:
docker compose up -d
This starts:
- PostgreSQL 18 on localhost:5432 (user: postgres, password: postgres)
- Redis on localhost:6379
cp .env.example .env
Edit .env and fill in the required values. At minimum for local development you need:
| Variable | Description |
|---|---|
DATABASE_URL |
PostgreSQL connection string, e.g. postgresql://postgres:postgres@localhost:5432/autonoma |
REDIS_URL |
Redis connection string, e.g. redis://localhost:6379 |
BETTER_AUTH_SECRET |
Any random string for session signing |
GOOGLE_CLIENT_ID |
Google OAuth client ID |
GOOGLE_CLIENT_SECRET |
Google OAuth client secret |
GEMINI_API_KEY |
Google Gemini API key (for AI features) |
See .env.example for the full list of variables grouped by service.
Generate the Prisma client and run migrations:
pnpm db:generate
pnpm db:migrate
pnpm dev
This starts both the API server (port 4000) and UI (port 3000) concurrently.
To run them individually:
pnpm api # API only (port 4000)
pnpm ui # UI only (port 3000)
| Command | Description |
|---|---|
pnpm dev |
Start API + UI in development mode |
pnpm build |
Build all packages and apps |
pnpm typecheck |
Run TypeScript type checking across all packages |
pnpm lint |
Lint all packages |
pnpm test |
Run tests across all packages |
pnpm format |
Format code with Biome |
pnpm check |
Lint and format with Biome |
pnpm db:generate |
Generate Prisma client from schema |
pnpm db:migrate |
Run database migrations |
pnpm docs |
Start the documentation site (port 4321) |
Natural language test
|
Execution Agent (packages/engine)
|
Screenshot -> LLM decides action -> Execute command -> Record step
| |
Point detection (packages/ai) Platform drivers
| | |
Gemini / Moondream Playwright Appium
(web) (mobile)
Tests are defined as Markdown files with YAML frontmatter:
---
url: https://example.com
---
Navigate to the login page, enter "user@test.com" and "password123",
click Sign In, and assert the dashboard is visible.
$ claude mcp add autonoma \
-- python -m otcore.mcp_server <graph>