Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion cmd/daemon/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ func main() {
noEventStream := flag.Bool("no-eventstream", false, "disable built-in event stream service (port 1002)")
noSkillinject := flag.Bool("no-skillinject", false, "disable built-in skill-injection service (agent context injection). Env: PILOT_NO_SKILLINJECT=1.")
webhookURL := flag.String("webhook", "", "HTTP(S) endpoint for event notifications (empty = disabled)")
webhookSecret := flag.String("webhook-secret", "", "HMAC-SHA256 pre-shared secret for webhook payload signing (empty = no signature). Env: PILOT_WEBHOOK_SECRET.")
adminToken := flag.String("admin-token", "", "admin token for network operations")
networks := flag.String("networks", "", "comma-separated network IDs to auto-join at startup")
trustAutoApprove := flag.Bool("trust-auto-approve", false, "automatically approve all incoming trust handshakes")
Expand Down Expand Up @@ -348,7 +349,16 @@ func main() {
// bus, the plugin subscribes and POSTs to the configured URL. URL
// hot-swap (IPC's `set-webhook`) routes through SetURL on the
// plugin via the daemon's WebhookManager interface.
webhookSvc := webhook.NewService(*webhookURL)
// Resolve webhook secret: explicit flag overrides env var
webhookSecretVal := *webhookSecret
if webhookSecretVal == "" {
webhookSecretVal = os.Getenv("PILOT_WEBHOOK_SECRET")
}
var webhookOpts []webhook.Option
if webhookSecretVal != "" {
webhookOpts = append(webhookOpts, webhook.WithSecret(webhookSecretVal))
}
webhookSvc := webhook.NewService(*webhookURL, webhookOpts...)
if err := rt.Register(webhookSvc); err != nil {
log.Fatalf("register webhook: %v", err)
}
Expand Down
Loading