file_storage
Replaces the default local-disk file backend with S3, R2, GCS, MinIO, or any S3-compatible store. Pylon also ships a Stack0 backend selected via env vars without a plugin entry.
endpoint to the service URL.
Or via env (no plugin entry needed):
POST /api/files/upload stores to the chosen backend and returns the public URL. The path is the same regardless of backend — your client code doesn’t change.
cache
In-process key-value cache for expensive computations. TTL’d, size-bounded, LRU-evicting.
cache.invalidate(prefix) blasts every key starting with the prefix — handy when an entity changes:
cache_client
Same API as cache, but backed by an external Redis/Memcached instance for multi-replica deployments.
cache_client automatically with a managed Redis instance.
email
Replaces the default email transport. Pylon already supports SendGrid / Resend / Stack0 / webhook via env vars (PYLON_EMAIL_PROVIDER=...); use this plugin when you need richer config or per-template behavior.
magic_code, email_verification, org_invite, etc.), the plugin’s template overrides the default. Templates support {var} substitution from the event payload.
Programmatic send from a function:
webhooks
Fire HTTP POST hooks after entity writes — perfect for syncing to data warehouses, notifying Slack, kicking off async work in another service.
secret_env set, requests carry an X-Pylon-Signature header containing sha256=<hex hmac> — verify on the receiving side to confirm the webhook came from your Pylon instance.
Failed deliveries retry per the retry config with exponential backoff. Permanently-failed deliveries land in a WebhookDelivery table for manual inspection.
SSRF defense: webhooks are subject to net_guard if enabled — blocks delivery to private IP ranges. Allowlist specific internal hosts via net_guard.allow_hosts.
stripe
Stripe-specific webhook handling, signature verification, and convenience helpers for subscriptions / invoices / customers.
POST /api/webhooks/stripe — verifies the Stripe signature header, parses the event, fires the corresponding hook.
Auto-syncs Stripe objects to your entities when sync_to_entity is set:
customer.created→ upsertUserrow keyed bystripeCustomerIdcustomer.subscription.created/updated/deleted→ upsertSubscriptionrowinvoice.payment_succeeded/failed→ upsertInvoicerow
Subscription.status == 'active' directly without round-tripping to Stripe.
For custom event handling:
feature_flags
Runtime feature flags with per-user, per-tenant, or percentage-based rollout.
rollout: 25 means deterministic 25% rollout — same user always gets the same answer, based on a hash of user_id + flag_name. Useful for A/B tests.
audit_log
Records every write (insert / update / delete) to specified entities, with the actor, the before/after values, and the timestamp. Tamper-evident if you opt into the integrity-check signing mode.
exclude_fields ensures secrets never land in the audit table. sign_entries: true HMACs each row so a malicious admin can’t tamper with history without leaving evidence.
For compliance-heavy environments (HIPAA, SOC2, ISO 27001), enable signing and ship the audit table to immutable cold storage on a schedule.