Describe your idea. The agent does the rest.
Hermes-powered launch kit: describe a product idea in plain text, and the agent autonomously researches competitors, writes a landing page, drafts launch posts, and generates AI agent prompts.
- Next.js 14 (App Router, TypeScript, Tailwind)
- Clerk — authentication and per-user run history
- Hermes Agent — OpenAI-compatible API at
/v1/chat/completions(port 8642) - Supabase — run storage + waitlist
- Coolify — reverse proxy on DigitalOcean VPS
- Copy env file:
cp .env.example .env- Run Supabase schema in your project SQL editor:
# See supabase/schema.sql- Install and run:
npm install
npm run devOpen http://localhost:3000.
| Variable | Description |
|---|---|
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY |
Clerk publishable key |
CLERK_SECRET_KEY |
Clerk secret key |
HERMES_URL |
Hermes gateway URL (e.g. http://hermes-agent:8642) |
HERMES_API_KEY |
API_SERVER_KEY from Hermes |
NEXT_PUBLIC_APP_URL |
Public app URL for landing page form POSTs |
SUPABASE_URL |
Supabase project URL |
SUPABASE_SERVICE_KEY |
Supabase service role key |
TELEGRAM_BOT_TOKEN |
Optional fallback Telegram bot |
TELEGRAM_CHAT_ID |
Optional fallback chat ID |
DAILY_RUN_LIMIT |
Daily run cap per user (default 1) |
ENFORCE_DAILY_LIMIT |
Set true to enforce the daily cap |
MONTHLY_RUN_LIMIT |
Monthly run cap per user (default 5) |
ENFORCE_MONTHLY_LIMIT |
Set true to enforce the monthly cap |
STREAM_DEBUG |
Set 1 to log Hermes SSE payloads in the server terminal |
| Route | Method | Description |
|---|---|---|
/api/run-task |
GET (SSE) | Runs one agent task (step-by-step) |
/api/runs |
GET | List your past runs (auth required) |
/api/preview/[id] |
GET | Serve generated landing page HTML |
/api/status/[id] |
GET (SSE) | Resume/poll run progress |
/api/runs/[id] |
GET | Fetch run outputs (JSON) |
/api/waitlist |
POST | Join waitlist {email, source, run_id?} |
-
Ensure Hermes Agent is running with MiniMax configured and
API_SERVER_ENABLED=true. -
Add this app to your existing
docker-compose.ymlor use the provided one. Export required variables in your shell or place them in a root.envfile (gitignored) for Compose — including Clerk keys, Supabase credentials,HERMES_API_KEY, andAPP_URL/NEXT_PUBLIC_APP_URL:
docker compose up -d --build startupforge-app-
Point your Coolify reverse proxy at
127.0.0.1:3000. -
Set
NEXT_PUBLIC_APP_URL(orAPP_URL) to your public domain so generated landing pages POST to the correct waitlist endpoint.
startupforge/
├── app/
│ ├── page.tsx # Dashboard
│ ├── results/[id]/page.tsx # Output viewer
│ └── api/
│ ├── run-task/route.ts # SSE agent trigger
│ ├── status/[id]/route.ts
│ ├── runs/[id]/route.ts
│ └── waitlist/route.ts
├── lib/
│ ├── hermes.ts # Hermes API client
│ ├── supabase.ts # DB helpers
│ └── parse-stream.ts # SSE stream parser
├── components/
│ ├── IdeaForm.tsx
│ ├── ProgressTracker.tsx
│ └── OutputPanel.tsx
└── docker-compose.yml