Lewati ke konten utama

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

CaraCocok buat
--seraph-userserver unattended / docker / systemd / cron — fire-and-forget
SERAPH_USERsama, tapi kredensial gak nongol di ps/Task Manager
/invoke seraph_loginops 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 /invoke dengan cmd: "seraph_login" / seraph_redeem_key dll. langsung, atau pasang --seraph-user / SERAPH_USER pas 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.