{
    "stable": true,
    "versions": {
        "0.0.1": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "podii",
                "author": "@timconsidine",
                "description": "podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.1",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n",
                "changelog": "* podii initial build\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.1"
            },
            "creationDate": "Fri, 18 Sep 2026 17:16:55 GMT",
            "ts": "Fri, 18 Sep 2026 17:16:55 GMT",
            "publishState": "published"
        },
        "0.0.2": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "podii",
                "author": "@timconsidine",
                "description": "podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.2",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n",
                "changelog": "* podii initial build\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.2"
            },
            "creationDate": "Fri, 18 Sep 2026 17:36:31 GMT",
            "ts": "Fri, 18 Sep 2026 17:36:31 GMT",
            "publishState": "published"
        },
        "0.0.3": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "podii",
                "author": "@timconsidine",
                "description": "podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.3",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n",
                "changelog": "* podii initial build\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.3"
            },
            "creationDate": "Fri, 18 Sep 2026 20:15:38 GMT",
            "ts": "Fri, 18 Sep 2026 20:15:38 GMT",
            "publishState": "published"
        },
        "0.0.4": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "podii",
                "author": "@timconsidine",
                "description": "podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.4",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n",
                "changelog": "* podii initial build\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.4"
            },
            "creationDate": "Fri, 18 Sep 2026 22:08:55 GMT",
            "ts": "Fri, 18 Sep 2026 22:08:55 GMT",
            "publishState": "published"
        },
        "0.0.5": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "podii",
                "author": "@timconsidine",
                "description": "podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.5",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n",
                "changelog": "* podii initial build\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.5"
            },
            "creationDate": "Fri, 18 Sep 2026 22:19:25 GMT",
            "ts": "Fri, 18 Sep 2026 22:19:25 GMT",
            "publishState": "published"
        },
        "0.0.6": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "podii",
                "author": "@timconsidine",
                "description": "podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.6",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n",
                "changelog": "* podii initial build\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.6"
            },
            "creationDate": "Sat, 19 Sep 2026 07:12:58 GMT",
            "ts": "Sat, 19 Sep 2026 07:12:58 GMT",
            "publishState": "published"
        },
        "0.0.7": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "podii",
                "author": "@timconsidine",
                "description": "podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n\n---\nPackaged by @timconsidine, [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.7",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n\n\n---\nPackaged by @timconsidine, [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "changelog": "* docs update\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.7"
            },
            "creationDate": "Mon, 21 Sep 2026 20:24:44 GMT",
            "ts": "Mon, 21 Sep 2026 20:24:44 GMT",
            "publishState": "published"
        },
        "0.0.8": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "podii",
                "author": "@timconsidine",
                "description": "podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n\n---\nPackaged by @timconsidine, [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.8",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n\n\n---\nPackaged by @timconsidine, [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "changelog": "* latest base image\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.8"
            },
            "creationDate": "Mon, 21 Sep 2026 20:34:52 GMT",
            "ts": "Mon, 21 Sep 2026 20:34:52 GMT",
            "publishState": "published"
        },
        "0.0.9": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "podii",
                "author": "@timconsidine",
                "description": "podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n\n---\nPackaged by @timconsidine, [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.9",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n\n\n---\nPackaged by @timconsidine, [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "changelog": "* tags updated\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "webhook",
                    "notifications",
                    "alerting"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.9"
            },
            "creationDate": "Mon, 21 Sep 2026 20:52:34 GMT",
            "ts": "Mon, 21 Sep 2026 20:52:34 GMT",
            "publishState": "published"
        },
        "0.0.10": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "SVIY Podii",
                "author": "@timconsidine",
                "description": "SVIY Podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.10",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# SVIY Podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "changelog": "* name update\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "webhook",
                    "notifications",
                    "alerting"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.10"
            },
            "creationDate": "Mon, 21 Sep 2026 21:23:05 GMT",
            "ts": "Mon, 21 Sep 2026 21:23:05 GMT",
            "publishState": "revoked"
        },
        "0.0.11": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "podii",
                "author": "@timconsidine",
                "description": "SVIY Podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.11",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# SVIY Podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "changelog": "* name update\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "webhook",
                    "notifications",
                    "alerting"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.11"
            },
            "creationDate": "Mon, 21 Sep 2026 21:32:33 GMT",
            "ts": "Mon, 21 Sep 2026 21:32:33 GMT",
            "publishState": "published"
        },
        "0.0.12": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "SVIY Podii",
                "author": "@timconsidine",
                "description": "SVIY Podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.12",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# SVIY Podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "changelog": "* name update\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "webhook",
                    "notifications",
                    "alerting"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.12"
            },
            "creationDate": "Mon, 21 Sep 2026 21:39:44 GMT",
            "ts": "Mon, 21 Sep 2026 21:39:44 GMT",
            "publishState": "published"
        },
        "0.0.13": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "SVIY Podii",
                "author": "@timconsidine",
                "description": "SVIY Podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.13",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# SVIY Podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "changelog": "* 0.0.13 sqlite3\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "webhook",
                    "notifications",
                    "alerting"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.13"
            },
            "creationDate": "Tue, 22 Sep 2026 10:46:20 GMT",
            "ts": "Tue, 22 Sep 2026 10:46:20 GMT",
            "publishState": "published"
        },
        "0.0.14": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "SVIY Podii",
                "author": "@timconsidine",
                "description": "SVIY Podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.14",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# SVIY Podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "changelog": "* 0.0.14 new base\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "webhook",
                    "notifications",
                    "alerting",
                    "SVIY"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.14"
            },
            "creationDate": "Tue, 22 Sep 2026 20:30:21 GMT",
            "ts": "Tue, 22 Sep 2026 20:30:21 GMT",
            "publishState": "published"
        },
        "0.0.15": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "SVIY Podii",
                "author": "@timconsidine",
                "description": "SVIY Podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.15",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# SVIY Podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "changelog": "* 0.0.15 new base 0.0.7\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "webhook",
                    "notifications",
                    "alerting",
                    "SVIY"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.15"
            },
            "creationDate": "Wed, 23 Sep 2026 10:45:35 GMT",
            "ts": "Wed, 23 Sep 2026 10:45:35 GMT",
            "publishState": "published"
        },
        "0.0.16": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "SVIY Podii",
                "author": "@timconsidine",
                "description": "SVIY Podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.16",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# SVIY Podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "changelog": "* 0.0.16 remove micro\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "webhook",
                    "notifications",
                    "alerting",
                    "SVIY"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.16"
            },
            "creationDate": "Wed, 23 Sep 2026 10:54:15 GMT",
            "ts": "Wed, 23 Sep 2026 10:54:15 GMT",
            "publishState": "published"
        },
        "0.0.17": {
            "manifest": {
                "id": "io.timconsidine.podii",
                "title": "SVIY Podii",
                "author": "@timconsidine",
                "description": "SVIY Podii is a self-hosted, Cloudron-native webhook gateway. It **authenticates**\ninbound webhooks, **durably stores** them before acknowledging, optionally\n**transforms** them with jq, and **fans them out** to multiple destinations\nwith reliable retry and full delivery history.\n\n## Features\n\n- **Authenticated ingestion** — per-source, fail-closed verification with\n  constant-time comparison and provider presets for GitHub, GitLab, Gitea,\n  Forgejo, Stripe, Slack, Shopify, Discord, Twilio, and Svix/Standard-Webhooks.\n- **Durable by design** — the event is written to SQLite before the `202`\n  response. No Redis required; the database is the queue.\n- **jq transforms** — reshape or filter payloads with a live preview against a\n  real stored event. Pass-through forwards the exact received bytes.\n- **Fan-out destinations** — HTTP endpoints, email (SMTP/SMTPS), ntfy, and\n  Telegram, with exponential backoff, retries, and dead-lettering.\n- **Full history** — inspect every event, delivery, and attempt, then replay\n  individually or in bulk.\n- **Operator-friendly** — a fast server-rendered UI, a versioned REST API, and\n  access control delegated to Cloudron proxyAuth.\n\n## Getting started\n\n1. Open the app and create a **source**. New sources default to `record` mode,\n   so nothing is forwarded until you choose the destinations.\n2. Configure authentication. Pick a provider preset or build a custom scheme.\n3. Copy the source's **ingest URL** into your provider's webhook settings.\n4. Add one or more **actions** (HTTP, email, ntfy, Telegram) and switch the\n   source to `active` mode.\n5. Watch events arrive, inspect deliveries, and replay when needed.\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "tagline": "Authenticated webhooks, delivered anywhere",
                "version": "0.0.17",
                "healthCheckPath": "/healthz",
                "httpPort": 3000,
                "memoryLimit": 536870912,
                "addons": {
                    "localstorage": {
                        "sqlite": {
                            "paths": [
                                "/app/data/podii.db"
                            ]
                        }
                    },
                    "proxyAuth": {
                        "path": "!/ingest"
                    },
                    "sendmail": {}
                },
                "manifestVersion": 2,
                "postInstallMessage": "# SVIY Podii is ready\n\n## Next steps\n\n1. Open the app and create your first **source**. It defaults to `record` mode,\n   so events are stored but not forwarded until you add actions.\n2. Choose a provider preset (GitHub, Stripe, Slack, and more) or configure a\n   custom authentication scheme, and enter the shared secret.\n3. Copy the source's **ingest URL** (for example\n   `https://your-app-domain/ingest/<key>`) into your provider's webhook\n   configuration. The `/ingest` prefix is public; everything else is protected\n   by Cloudron login.\n4. Add **actions** to fan events out to HTTP endpoints, email, ntfy, or\n   Telegram, then set the source to `active`.\n5. Use **Events** to inspect payloads, delivery attempts, and to replay.\n\nSecrets are encrypted at rest and are never shown again after entry. Retention,\nretry, and body-size defaults can be adjusted under **Settings**.\n\n\n***\n\nPackaged by @timconsidine [https://communityapps.appx.uk](https://communityapps.appx.uk/) (full portfolio: [https://myca.appx.uk](https://myca.appx.uk/))\n",
                "changelog": "* 0.0.17 clean docs\n",
                "website": "https://communityapps.appx.uk",
                "contactEmail": "support@appx.uk",
                "icon": "file://logo.png",
                "tags": [
                    "productivity",
                    "webhook",
                    "notifications",
                    "alerting",
                    "SVIY"
                ],
                "iconUrl": "https://communityapps.appx.uk/cloudron-podii/podii-logo.png",
                "packagerName": "@timconsidine",
                "packagerUrl": "https://communityapps.appx.uk",
                "minBoxVersion": "9.1.0",
                "mediaLinks": [
                    "https://communityapps.appx.uk/cloudron-podii/media/screenshot.png"
                ],
                "dockerImage": "forgejo.tcjc.uk/cca/cloudron-podii:0.0.17"
            },
            "creationDate": "Wed, 23 Sep 2026 10:59:53 GMT",
            "ts": "Wed, 23 Sep 2026 10:59:53 GMT",
            "publishState": "published"
        }
    }
}