Neptune

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-secret

Run

# Development
bun run dev:web

# Or standalone
cd web
bun install
bun run dev

The 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)

  1. Authorization callback URL: https://neptune.rip/api/auth/callback/github
  2. Set GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET in production env

Local dev (Neptune Local or similar)

  1. GitHub Developer Settings → New OAuth App
  2. Authorization callback URL: http://localhost:3000/api/auth/callback/github
  3. 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.

On this page