Web Dashboard
Neptune's Next.js web interface
Web Dashboard
Neptune includes a Next.js web dashboard for managing analysis jobs through a browser interface.
Features
- GitHub OAuth authentication via Better Auth
- Job management — Upload binaries, track progress, view results
- Real-time progress — SSE-powered live updates during analysis
- Signature browser — Search and browse the signature database
- Report viewer — View HTML reports and download SBOMs
- Malware triage — Upload samples for YARA + capa analysis, view signal rankings, behavior hypotheses, and case results
- Sandbox management — Provision, monitor, and destroy AgentComputer cloud VMs; send prompts to agent sessions directly from the dashboard
Setup
Prerequisites
- Bun
- Running Neptune API server (
neptune serve)
Environment variables
NEPTUNE_API_URL=http://localhost:9090
NEPTUNE_ADMIN_KEY=your-admin-key
NEXT_PUBLIC_APP_URL=http://localhost:3000
BETTER_AUTH_URL=http://localhost:3000
BETTER_AUTH_SECRET=your-secret-here
AUTH_DATABASE_URL=postgres://postgres:postgres@localhost:5432/neptune
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secretRun
# Development
bun run dev:web
# Or standalone
cd web
bun install
bun run devThe dashboard runs on http://localhost:3000 by default.
GitHub OAuth setup
GitHub OAuth Apps (not GitHub Apps) only allow one authorization callback URL per registration. Use two OAuth apps: one for production and one for local dev.
Production (Neptune)
- Authorization callback URL:
https://neptune.rip/api/auth/callback/github - Set
GITHUB_CLIENT_IDandGITHUB_CLIENT_SECRETin production env
Local dev (Neptune Local or similar)
- GitHub Developer Settings → New OAuth App
- Authorization callback URL:
http://localhost:3000/api/auth/callback/github - Put that app’s Client ID and Secret in
web/.env(override the production values while developing)
“Continue with GitHub” on the login page can use the production callback via OAuth proxy when neptune.rip is deployed. Connect GitHub in settings uses linkSocial and requires the localhost callback on a dev OAuth app.
API proxy
The dashboard proxies /api/v1/* to NEPTUNE_API_URL, so browser requests stay same-origin while the Rust server remains on localhost:9090 by default. Server-Sent Events use /api/v1/jobs/{id}/events for one job and /api/v1/events for all job updates.