Self-hosted webhook operations

Every event, made legible.

Seshat turns noisy webhook payloads into a clear event stream, then routes the right message to the right channel—on your infrastructure.

JJellyfin
Playback progress

Live signal

A beautifully normalized media event

Artwork, episode context, playback details and provider links—without digging through raw JSON.

Routed to DingTalk · Markdown

Built for operators

A calm control plane for busy services.

Keep protocols isolated, delivery observable and every event useful to a human.

01

Typed event stream

Filter by app and message type, inspect normalized data, and page through history without loading everything at once.

02

App-aware enrichment

Jellyfin and Emby remain the source of truth, with TMDB as a focused metadata fallback.

03

Capability-based routing

Generate structured content once, then let each notification channel choose plain text or Markdown.

04

Observable delivery

Bounded retries, clear channel diagnostics and business logs keep failures understandable.

One inbox, many edges

Connect media events to the channels your team already watches.

Apps
JellyfinEmbyGitHubSynology
SSeshat
Channels
DingTalkTelegramAppriseWebhookEmail

Own the whole path

Deploy with one Compose file.

Run the unified Seshat container with SQLite by default, or connect PostgreSQL when your deployment grows.

Pin an immutable version tag for production deployments.
# compose.yaml
services:
  seshat:
    image: hienao6/seshat:beta-v0.9.0
    ports: ["3112:3112"]
    volumes:
      - ./data:/data
      - ./cache:/cache

Release lanes

Choose the pace that fits your deployment.