Mode headless (--no-gui)
Skip window desktop sepenuhnya, jalanin Seraph sebagai HTTP API host murni. Semua service backend tetap hidup — license heartbeat, bot manager, slot sweeper, REST + SSE bridge — tapi gak ada Tauri webview yang kebuka.
seraph.exe --no-gui
# atau, sama aja
seraph.exe --headless
Banner startup berubah:
[seraph] api on http://0.0.0.0:8090 (PIN=798465 at C:\Users\<you>\AppData\Roaming\Seraph\pin.txt)
[seraph] headless mode (--no-gui) — UI window suppressed; HTTP API on http://0.0.0.0:8090
Login akun Seraph kamu
Setiap bot-control command lewat require_active_license, jadi
operator harus udah login akun Seraph dengan license aktif sebelum
bot mana pun bisa di-spawn atau warp.
Tiga cara handle login-nya:
1. Pasang kredensial di launch (paling enak)
seraph.exe --no-gui \
--seraph-user namamu \
--seraph-pass passwordmu
Bin auto-login pas startup, fetch signed lease, lalu print:
[seraph] headless auto-login as namamu…
[seraph] license active: plan=premium max_slots=100
Setelah itu, setiap call /api/bots/... / /invoke lewat license
gate.
2. Pakai environment variables
Hasil sama, tapi kredensial gak masuk ke arg list process:
SERAPH_USER=namamu SERAPH_PASS=passwordmu seraph.exe --no-gui
Berguna buat systemd unit, Set-Item Env:SERAPH_USER di PowerShell,
atau .env file yang di-load launcher kamu.
3. Login lewat HTTP API setelah launch
Buat operator interaktif atau script one-off:
# 1. Boot headless.
seraph.exe --no-gui
# 2. Tukar PIN (printed pas startup) jadi bearer token.
PIN=$(grep -oE '[0-9]{6}' "$APPDATA/Seraph/pin.txt")
TOKEN=$(curl -s -X POST -H 'content-type: application/json' \
-d "{\"pin\":\"$PIN\"}" http://localhost:8090/auth/pin | jq -r .token)
# 3. Login Seraph (talk ke licensing server, save session token di
# %LOCALAPPDATA%\seraph\auth\session_token).
curl -s -X POST http://localhost:8090/invoke \
-H "authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{"cmd":"seraph_login","args":{"username":"namamu","password":"passwordmu"}}'
# 4. Sekarang spawn / warp / disconnect bot — setiap command lewat
# license gate selama session ini valid.
curl -s -X POST http://localhost:8090/invoke \
-H "authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{"cmd":"spawn_bot_email","args":{
"email":"[email protected]",
"password":"botpass",
"aid":null
}}'
Launch berikutnya reuse session token yang udah disave (gak perlu
re-login) sampai expire atau seraph_logout.
Kapan pakai cara mana
| Cara | Cocok buat |
|---|---|
--seraph-user | server unattended / docker / systemd / cron — fire-and-forget |
SERAPH_USER | sama, tapi kredensial gak nongol di ps/Task Manager |
/invoke seraph_login | ops interaktif, login terskrip dari tooling existing |
Auth tetap berlaku
Setiap endpoint di balik bearer token tetep di-gate sama dengan
build GUI — ambil PIN dari pin.txt setelah launch, tukar ke token
lewat POST /auth/pin, lalu pake bearer itu buat semuanya. Lihat
Authentication.
Discovery
Hit GET /api/commands buat list lengkap dispatch
command yang lagi exposed binary — cara canonical buat tahu apa yang
reachable di mode headless tanpa code-walk.
Limit
- Gak ada UI login, gak ada dialog PIN. Path file PIN-nya printed pas startup; copy dari sana.
- Tab dashboard licensing (subscription, redeem code) gak ada di
mode ini. Pake
POST /invokedengancmd: "seraph_login"/seraph_redeem_keydll. langsung, atau pasang--seraph-user/SERAPH_USERpas launch. - Slot sweeper tetep jalan — bot di atas plan cap kena reap.
- Tanpa Seraph login berhasil, setiap bot command return
{"error":"not_logged_in: sign in to your Seraph account first"}. Login dulu, baru drive bot.