You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
AI-powered security scanning platform — multi-tenant SaaS with per-org data isolation.
Aegis provides a centralized platform where AI security agents push vulnerability findings via authenticated REST API. Findings are deduplicated, triaged, and presented in a unified dashboard. The Aegis agent is a standalone Go binary that scans codebases using AI-powered personas and pushes findings to the platform.
Quick Start
Docker Compose (recommended)
# Clone and start
git clone git@github.com:pixelvide/aegis.git
cd aegis
# Create env file
cp .env.example .env
# Edit .env — set JWT_SECRET for production# Start everything
docker compose up --build -d
# Open http://localhost:8080
Local Development
# 1. Start PostgreSQL
docker compose up postgres -d
# 2. Start Go servercd server
export DATABASE_URL="postgres://aegis:aegis@localhost:5432/aegis?sslmode=disable"
go run ./cmd/aegis-server/
# 3. Start UI dev server (separate terminal)cd ui
npm install
npm run dev
# Open http://localhost:5173
Subdomain Testing (local)
Aegis supports subdomain-based org resolution (e.g., acme.aegis.io). To test this locally, we use lvh.me — a public domain where *.lvh.me resolves to 127.0.0.1. No /etc/hosts changes needed.
Setup:
# .env (already set by default in .env.example)
AEGIS_BASE_DOMAIN=lvh.me
# Restart
docker compose up --build -d
Usage:
URL
What happens
http://lvh.me:8080
Base domain — auth flows (login, register) happen here
http://test.lvh.me:8080
Resolves org with slug test from subdomain
http://acme.lvh.me:8080
Resolves org with slug acme from subdomain
Any new org slug
Works instantly — *.lvh.me is a wildcard
Production: Set AEGIS_BASE_DOMAIN=aegis.io (or your domain). Configure DNS with a wildcard *.aegis.io → your-server-ip.
Base domain for subdomain org resolution (e.g., aegis.io)
AEGIS_ALLOWED_ORIGINS
http://localhost:5173
CORS origins (comma-separated)
POSTGRES_USER
aegis
PostgreSQL user
POSTGRES_PASSWORD
aegis
PostgreSQL password
POSTGRES_DB
aegis
PostgreSQL database name
API Overview
Auth (public)
Method
Endpoint
Description
POST
/api/v1/auth/register
Create account (gated by signup flag)
POST
/api/v1/auth/login
Sign in → sets aegis_token cookie
POST
/api/v1/auth/logout
Clear auth cookie
GET
/api/v1/auth/me
Current user + their orgs
Organizations (authenticated)
Method
Endpoint
Description
POST
/api/v1/orgs
Create org (creator = owner)
GET
/api/v1/orgs
List user's orgs + base_domain config
GET
/api/v1/orgs/{slug}
Get org by slug
Feature Flags (authenticated)
Method
Endpoint
Description
GET
/api/v1/config/features
List all feature flags
Scans (authenticated + org context) — read-only
Method
Endpoint
Description
GET
/api/v1/scans
List scans (legacy data)
GET
/api/v1/scans/{id}
Get scan details
Findings (authenticated + org context)
Method
Endpoint
Description
GET
/api/v1/findings
List findings (filterable)
GET
/api/v1/findings/{id}
Get finding details
PATCH
/api/v1/findings/{id}
Update finding status
GET
/api/v1/findings/{id}/exploits
List exploits
GET
/api/v1/findings/{id}/exploits/{eid}
Get specific exploit
Dashboard (authenticated + org context)
Method
Endpoint
Description
GET
/api/v1/dashboard/stats
Aggregate statistics
Projects & Members (authenticated + org context)
Method
Endpoint
Description
POST
/api/v1/projects
Create project
GET
/api/v1/projects
List org projects
GET
/api/v1/projects/{slug}
Get project by slug
GET
/api/v1/members
List org members
POST
/api/v1/members/invite
Invite user by email
DELETE
/api/v1/members/{userId}
Remove member
Agent Ingest API (Bearer token auth)
Method
Endpoint
Description
POST
/api/v1/agent/findings
Push a finding (upsert on fingerprint)
GET
/api/v1/agent/findings
Pull findings for verification
PATCH
/api/v1/agent/findings/{id}
Update finding status (open/verified)
POST
/api/v1/agent/findings/{id}/exploits
Attach exploit code
Token Management (authenticated + org context)
Method
Endpoint
Description
POST
/api/v1/tokens
Generate API token (shown once)
GET
/api/v1/tokens
List tokens (prefix + metadata)
DELETE
/api/v1/tokens/{id}
Revoke token
Org-scoped endpoints require requests to be made on an org subdomain (e.g., acme.lvh.me:8080 in dev or acme.aegis.io in production) or a custom domain.