Quick Start — Local Development
Get ProjectAchilles running on your machine for development. This guide uses the development startup script that automatically installs dependencies, finds available ports, and starts both frontend and backend.
Prerequisites
- Node.js 22.x or higher
- npm 10.x or higher
- Git
- Go 1.24+ (optional — only needed for agent development or building test binaries)
Steps
1. Clone the Repository
git clone https://github.com/projectachilles/ProjectAchilles.git
cd ProjectAchilles
2. Configure Clerk Authentication
All modules require Clerk authentication. Create a free Clerk application:
- Sign up at clerk.com and create a new application
- Enable your desired sign-in methods (Google, GitHub, email/password)
- Copy your API keys from the Clerk Dashboard
Create the environment files:
# Frontend
cat > frontend/.env << 'EOF'
VITE_CLERK_PUBLISHABLE_KEY=pk_test_your_key_here
EOF
# Backend
cat > backend/.env << 'EOF'
CLERK_PUBLISHABLE_KEY=pk_test_your_key_here
CLERK_SECRET_KEY=sk_test_your_key_here
EOF
The frontend uses VITE_CLERK_PUBLISHABLE_KEY (with the VITE_ prefix) and the backend uses CLERK_PUBLISHABLE_KEY and CLERK_SECRET_KEY. Both the frontend and backend publishable keys should be the same value.
3. Start the Development Stack
./scripts/start.sh -k --daemon
This script will:
- Kill any existing ProjectAchilles processes (
-k) - Install npm dependencies for both frontend and backend
- Find available ports (defaults: frontend 5173, backend 3000)
- Start both services in the background (
--daemon)
4. Open the Dashboard
Navigate to http://localhost:5173 in your browser. You'll be redirected to Clerk's sign-in page. After authenticating, you'll see the Test Browser.
Optional: Elasticsearch
The Analytics module requires an Elasticsearch connection. You can either:
Option A — Use Elastic Cloud (recommended for production):
- Create a free trial at elastic.co
- Add credentials to
backend/.env:
ELASTICSEARCH_CLOUD_ID=your_cloud_id
ELASTICSEARCH_API_KEY=your_api_key
Option B — Use local Elasticsearch via Docker:
docker compose --profile elasticsearch up -d
This starts Elasticsearch 8.17 (single-node, security disabled) and seeds 1,000 synthetic test results.
The local ES instance is available at http://localhost:9200 — no credentials needed.
Optional: Test Library
To populate the Test Browser, configure a Git repository containing security tests:
# In backend/.env
TESTS_REPO_URL=https://github.com/your-org/your-test-library.git
GITHUB_TOKEN=ghp_your_pat_here # Only needed for private repos
The backend will clone and sync the test library on startup.
Stopping Services
./scripts/start.sh --stop
Troubleshooting
Port Conflicts
If ports 5173 or 3000 are in use, the start script will automatically find the next available port. Check the script output for the actual ports used.
Clerk Authentication Errors
- Ensure both
frontend/.envandbackend/.envhave the correct keys - The publishable key should start with
pk_test_(development) orpk_live_(production) - The secret key should start with
sk_test_orsk_live_
TypeScript Build Errors
Verify the project compiles cleanly:
cd frontend && npm run build
cd ../backend && npm run build
Next Steps
- Quick Start — Docker — Deploy with Docker Compose
- Features Overview — Explore all platform capabilities
- Development Setup — Full contributor guide