How hookdeck/outpost works
Outpost is a multi-tenant outbound event-delivery service: producers publish events by API or queue; topic subscriptions fan them out into queued destination deliveries, which are retried and recorded for observability and customer support. Its API and portal manage tenants, destinations, retries, and delivery visibility. The graph combines explicit source calls with README-documented capabilities; queue-backed ingestion, storage implementations, and several integrations are not fully sampled, so unverified relationships are omitted.
Main entry points: messagehandler.go Delivery worker · eventhandler.go Event fanout · router.go HTTP API · app.go Application lifecycle
Components 22
Product interfaces
- Outpost server
cmd/outpost-server/main.go - HTTP API
internal/apirouter/router.go - Customer portal
internal/portal/src/app.tsx - SDK clients
sdks/outpost-go/outpost.go - MCP server
sdks/outpost-typescript/src/mcp-server/server.ts
Tenant management
- Tenant and destination API
internal/apirouter/destination_handlers.go - Tenant store
internal/tenantstore/tenantstore.go
Event delivery
- Publish API
cmd/publish/publish_handler.go - Event fanout
internal/publishmq/eventhandler.go - Delivery queue
internal/deliverymq/deliverymq.go - Delivery worker
internal/deliverymq/messagehandler.go - Destination providers
internal/destregistry/registry.go - Webhook provider
internal/destregistry/providers/destwebhook/destwebhook.go - Publish queue input
internal/publishmq/publishmq.go
Runtime platform
- Application lifecycle
internal/app/app.go - Service workers
internal/services/builder.go
Operations and observability
- Delivery log queue
internal/logmq/logmq.go - Delivery log store
internal/logstore/logstore.go - Failure alerts
internal/alert/evaluator.go - OpenTelemetry
internal/otel/otel.go
Other components
- Event producers
- External destinations
Connections 22
- Event producers → HTTP API: publishes events
README.md - SDK clients → HTTP API: calls API
- MCP server → SDK clients: uses client
sdks/outpost-typescript/src/mcp-server/server.ts - Customer portal → HTTP API: manages destinations
- HTTP API → Tenant and destination API: routes requests
- Tenant and destination API → Tenant store: reads and writes
internal/apirouter/destination_handlers.go - Publish API → Event fanout: submits event
- Publish queue input → Event fanout: ingests events
- Event fanout → Tenant store: matches destinations
internal/publishmq/eventhandler.go - Event fanout → Delivery queue: enqueues tasks
internal/publishmq/eventhandler.go - Delivery queue → Delivery worker: dispatches tasks
- Delivery worker → Tenant store: loads destination
internal/deliverymq/messagehandler.go - Delivery worker → Destination providers: publishes event
- Destination providers → Webhook provider: selects provider
- Webhook provider → External destinations: delivers webhook
README.md - Delivery worker → Delivery log queue: records attempt
internal/deliverymq/messagehandler.go - Delivery log queue → Delivery log store: stores delivery logs
- Failure alerts → Delivery log store: evaluates failures
- Outpost server → Application lifecycle: starts runtime
cmd/outpost-server/main.go - Application lifecycle → Service workers: builds workers
internal/app/app.go - Application lifecycle → OpenTelemetry: initializes telemetry
internal/app/app.go - Event producers → Publish queue input: publishes to queue
README.md