This guide covers advanced configuration options including notification and CDN setup
The notification and CDN setup can be modify directly in the settings file. This page is to provide you a quick reference for the most common configurations through CLI and hot to verify your setup.
## Telegram Setuposmedeus config set notification.enabled trueosmedeus config set notification.telegram.enabled trueosmedeus config set notification.provider telegramosmedeus config set notification.telegram.bot_token "12345:your-token"osmedeus config set notification.telegram.chat_id "-1001234567890"
verify your setup by sending a sample message with utility function osmedeus eval 'notify_telegram("**hola** osmedeus from cli")'
Notification Functions
Use osmedeus func ls noti to list all available notification functions.
Here are a quick guide on how to get your telegram token and channel ID
Search for @BotFather and create your bot then grab the token# get channel IDcurl "https://api.telegram.org/bot$TELEGRAM_TOKEN/getUpdates" | jq# send a test messagecurl -X POST "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" -d chat_id=-<channel-id> -d text="Hello, this is a broadcast to the channel"
## CDN Setup for R2osmedeus config set storage.provider 'r2'osmedeus config set storage.access_key_id '<r2-key-id>'osmedeus config set storage.bucket '<r2-bucket-name>'osmedeus config set storage.secret_access_key '<r2-access-key>'osmedeus config set storage.endpoint '<endpoint>.r2.cloudflarestorage.com'osmedeus config set storage.presign_expiry '2h'osmedeus config set storage.use_ssl 'true'osmedeus config set storage.enabled 'true'
verify your setup by sending a sample message with utility function osmedeus eval 'cdn_ls_tree()'
## CDN Setup for GCSosmedeus config set storage.provider 'gcs'osmedeus config set storage.access_key_id '<gcs-key-id>'osmedeus config set storage.secret_access_key '<gcs-access-key>'osmedeus config set storage.bucket '<gcs-bucket-name>'osmedeus config set storage.endpoint 'storage.googleapis.com'osmedeus config set storage.region 'us-east-1'osmedeus config set storage.use_ssl 'true'osmedeus config set storage.presign_expiry '1h'osmedeus config set storage.enabled 'true'
verify your setup by sending a sample message with utility function osmedeus eval 'cdn_ls_tree()'
# =============================================================================# Notification Configuration# =============================================================================# Send notifications when scans complete or find interesting resultsnotification: # Notification provider: "telegram" (future: slack, discord, webhook) provider: telegram # Master switch to enable/disable all notifications enabled: false # Telegram bot settings # Create a bot via @BotFather and get the token # Get your chat ID by messaging @userinfobot telegram: # Bot token from @BotFather bot_token: "" # Chat ID to send messages to (can be user or group) chat_id: 0 # Enable Telegram notifications enabled: false # Channel map for sending to specific channels/groups by name # Use notify_telegram_channel("#name", "message") or send_telegram_file_channel("#name", "/path/to/file") # You can also use numeric chat IDs directly: notify_telegram_channel("-1001234567890", "message") telegram_channel_map: # alerts: -1001234567890 # reports: -1009876543210 # Webhook settings # Configure multiple webhook endpoints for notifications # Webhooks are triggered on workflow events (completed, failed, etc.) webhooks: # Example webhook configuration - url: "https://example.com/webhook" # Enable/disable this webhook enabled: false # Custom HTTP headers (e.g., for authentication) headers: Authorization: "Bearer your-token-here" Content-Type: "application/json" # Request timeout in seconds (default: 30) timeout: 30 # Number of retry attempts on failure (default: 3) retry_count: 3 # Skip TLS certificate verification (default: false) # Set to true for self-signed certificates skip_tls_verify: false # Event filter - only trigger for these events (empty = all events) # Available events: workflow_completed, workflow_failed, workflow_cancelled events: - workflow_completed - workflow_failed # Second webhook example (e.g., Slack incoming webhook) # - url: "https://hooks.slack.com/services/xxx/yyy/zzz" # enabled: false # headers: {} # events: # - workflow_completed# =============================================================================# Cloud Storage Configuration (Optional)# =============================================================================# S3-compatible storage for backing up scan results# Supports AWS S3, MinIO, Cloudflare R2, Google Cloud Storage, DigitalOcean Spaces, Oracle OCIstorage: # Storage provider: "s3", "minio", "r2", "gcs", "spaces", "oci" # The provider determines endpoint resolution and default settings provider: s3 # Storage endpoint URL (auto-resolved for most providers) # Leave empty to auto-resolve based on provider and region/account_id # Explicit examples: # AWS S3: "s3.us-east-1.amazonaws.com" # MinIO: "localhost:9000" # R2: Will auto-resolve from account_id # GCS: "storage.googleapis.com" # Spaces: Will auto-resolve from region (e.g., "nyc3.digitaloceanspaces.com") # OCI: Will auto-resolve from account_id (namespace) and region endpoint: "" # Access credentials access_key_id: "" secret_access_key: "" # Bucket name for storing results bucket: "" # Cloud region (e.g., us-east-1, eu-west-1) # Required for: s3, spaces, oci region: us-east-1 # Account ID or Namespace (provider-specific) # R2: Your Cloudflare account ID # OCI: Your Object Storage namespace account_id: "" # Use SSL/TLS for connections (default: true for cloud providers) use_ssl: true # Force path-style URLs (auto-configured per provider) # Set true for MinIO, R2, OCI; false for S3, GCS, Spaces path_style: false # Default presigned URL expiry (e.g., "1h", "30m", "24h") # Used by cdnGetPresignedURL when no expiry is specified presign_expiry: "1h" # Enable cloud storage uploads enabled: false
⌘I
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Osmedeus Docs","colors":{"primary":"#8B5CF6","light":"#bd93f9","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/osmedeus/QiTXLQ_BxGicl1Z6/logo/osm.png?fit=max\u0026auto=format\u0026n=QiTXLQ_BxGicl1Z6\u0026q=85\u0026s=e6312f264cc56f455ff45ec20e0ae1bd","dark":"https://mintcdn.com/osmedeus/QiTXLQ_BxGicl1Z6/logo/osm.png?fit=max\u0026auto=format\u0026n=QiTXLQ_BxGicl1Z6\u0026q=85\u0026s=e6312f264cc56f455ff45ec20e0ae1bd","href":"https://docs.osmedeus.org"},"favicon":"https://mintcdn.com/osmedeus/v2F2CQFtcKul_NUM/favicon.ico?fit=max\u0026auto=format\u0026n=v2F2CQFtcKul_NUM\u0026q=85\u0026s=353314d9cd30157694855ab05111ec38","background":{"decoration":"gradient","color":{"light":"#F8FAFC","dark":"#0F172A"}},"navbar":{"links":[{"href":"https://osmedeus.org/","label":"Website"},{"href":"https://x.com/OsmedeusEngine","label":"Twitter"}],"primary":{"type":"button","label":"Github","href":"https://github.com/j3ssie/osmedeus"}},"footer":{"socials":{"twitter":"https://x.com/OsmedeusEngine","github":"https://github.com/j3ssie","discord":"https://discord.gg/mtQG2FQsYA","x":"https://x.com/j3ssie","linkedin":"https://www.linkedin.com/in/jessie-aiho"}},"seo":{"metatags":{"og:image":"https://raw.githubusercontent.com/osmedeus/assets/refs/heads/main/osm-banner.png","og:description":"A Modern Orchestration Engine for Security"}},"errors":{"404":{"redirect":false,"title":"Oh my, the page has gone missing all on its own!","description":"Oh dear! I'm terribly sorry for the mix-up. Perhaps try the main path home, or check your directions again. Yours politely, with a tip of the hat."}},"contextual":{"options":["copy","view","chatgpt","claude","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Contact","icon":"x-twitter","href":"https://x.com/j3ssie"},{"anchor":"Sponring","icon":"hands-holding-diamond","href":"/sponsor"},{"anchor":"Roadmap","icon":"map","href":"/others/roadmap"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"osmedeus","hasAudioNarration":false,"actualSubdomain":"osmedeus","customDomains":["docs.osmedeus.org"],"gitSource":{"type":"github","owner":"osmedeus","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a22017000b8795e6e0a8ca5","collectionId":"2663fac8-8d77-4c89-bf06-941a5adfe847","schemaVersion":"v2"},"entitlements":{},"buildId":"6ae94589f56d237c825b60a7:success","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Advanced Usage","count":34},{"language":"default","tag":"Getting Started","count":19},{"language":"default","tag":"Advanced Topics \u0026 Extending Osmedeus","count":7},{"language":"default","tag":"Reference \u0026 FAQ","count":7},{"language":"default","tag":"Reference","count":7},{"language":"default","tag":"Cloud","count":7},{"language":"default","tag":"Workflows","count":5},{"language":"default","tag":"Understand Architecture","count":4},{"language":"default","tag":"Functions","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styling.css","content":"body{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono,code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.nav-logo{height:44px}.eyebrow{color:#666;font-weight:400}"}],"page":{"pagePath":"advanced/notification-and-cdn","slug":"/advanced/notification-and-cdn","pageMetadata":{"title":"Notification and CDN Configuration","description":"This guide covers advanced configuration options including notification and CDN setup","icon":"bells","href":"/advanced/notification-and-cdn","hidden":false},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"This guide covers advanced configuration options including notification and CDN setup\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Frame,Heading,OptimizedImage}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The notification and CDN setup can be modify directly in the settings file. This page is to provide you a quick reference for the most common configurations through CLI and hot to verify your setup.`}),`\n`,_jsx(Heading,{level:`2`,id:`notification-configuration`,children:`Notification Configuration`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`## Telegram Setup`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` notification.enabled`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` notification.telegram.enabled`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` notification.provider`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` telegram`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` notification.telegram.bot_token`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"12345:your-token\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` notification.telegram.chat_id`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"-1001234567890\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`verify your setup by sending a sample message with utility function `,_jsx(_components.code,{children:`osmedeus eval 'notify_telegram(\"**hola** osmedeus from cli\")'`})]}),`\n`,_jsx(Frame,{caption:`Notification Functions`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/noti-funcs.png?fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=5c7ea0a243ff111ce3a014986c2c870e`,alt:`Notification Functions`,\"data-og-width\":`4336`,width:`4336`,\"data-og-height\":`1450`,height:`1450`,\"data-path\":`images/noti/noti-funcs.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/noti-funcs.png?w=280\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=c8b070c64a3183efa00138dc883c832e 280w, https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/noti-funcs.png?w=560\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=58a5afdf55ff7a9ad7c201cd35740781 560w, https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/noti-funcs.png?w=840\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=edfa8442c0b5aff7f75dc8e1d8d11cb1 840w, https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/noti-funcs.png?w=1100\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=116bef63941e3fc44127429d3fdf79b0 1100w, https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/noti-funcs.png?w=1650\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=d25d63a2c206f53b5145cf3d3b1ba00d 1650w, https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/noti-funcs.png?w=2500\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=f2e0068c5d489b225e336edff01e2859 2500w`})}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`osmedeus func ls noti`}),` to list all available notification functions.`]}),`\n`,_jsx(Heading,{level:`3`,id:`how-to-get-your-telegram-token-and-channel-id`,children:`How to get your telegram token and channel ID`}),`\n`,_jsx(_components.p,{children:`Here are a quick guide on how to get your telegram token and channel ID`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`Search`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` for`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @BotFather`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` and`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` your`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` bot`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` then`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` grab`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` the`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` token`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# get channel ID`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.telegram.org/bot`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$TELEGRAM_TOKEN`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/getUpdates\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` jq`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` `})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# send a test message`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.telegram.org/bot`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$TELEGRAM_TOKEN`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/sendMessage\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` chat_id=-`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`channel-i`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` text=\"Hello, this is a broadcast to the channel\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`cdn-configuration`,children:`CDN Configuration`}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`osmedeus func ls cdn`}),` to list all available CDN functions. Below are some of the functions I usually use:`]}),`\n`,_jsx(Frame,{caption:`CDN Functions`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/cdn-funcs.png?fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=a3bbbe7a0fac73fa97bca48205e12f0f`,alt:`CDN Functions`,\"data-og-width\":`4336`,width:`4336`,\"data-og-height\":`1774`,height:`1774`,\"data-path\":`images/noti/cdn-funcs.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/cdn-funcs.png?w=280\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=4d6ab20e9af77e012cea7380daab5561 280w, https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/cdn-funcs.png?w=560\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=ca6f4c462b1d0ecbd39fc595cad09a95 560w, https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/cdn-funcs.png?w=840\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=7ecf18482889960d95fb12aab3eeb552 840w, https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/cdn-funcs.png?w=1100\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=c59bdda5cee1362cc061027dd56a6cdb 1100w, https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/cdn-funcs.png?w=1650\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=083aee9b1f7e642da6ee551f9bd9a8d2 1650w, https://mintcdn.com/osmedeus/8zvZUJvRBGDXZt0n/images/noti/cdn-funcs.png?w=2500\u0026fit=max\u0026auto=format\u0026n=8zvZUJvRBGDXZt0n\u0026q=85\u0026s=47be39ac4bcb46fb073c55ff07879c5c 2500w`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`11`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` eval`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'cdn_ls_tree()'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# download and upload result`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` eval`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` cdn_download`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`\"workspace_result.jsonl\"`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"workspace_result.jsonl\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` eval`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` cdn_upload`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`\"workspace_result.jsonl\"`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"workspace_result.jsonl\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# sync folder to remote`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` eval`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'cdn_sync_upload(\"local\", \"remote\")'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` eval`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'cdn_ls_tree(\"targets/\")'`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`cloudflare-r2`,children:`Cloudflare R2`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`## CDN Setup for R2`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.provider`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'r2'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.access_key_id`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '\u003cr2-key-id>'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.bucket`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '\u003cr2-bucket-name>'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.secret_access_key`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '\u003cr2-access-key>'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.endpoint`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '\u003cendpoint>.r2.cloudflarestorage.com'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.presign_expiry`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '2h'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.use_ssl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'true'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.enabled`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'true'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`verify your setup by sending a sample message with utility function `,_jsx(_components.code,{children:`osmedeus eval 'cdn_ls_tree()'`})]}),`\n`,_jsx(Heading,{level:`3`,id:`google-cloud-storage`,children:`Google Cloud Storage`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`## CDN Setup for GCS`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.provider`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'gcs'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.access_key_id`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '\u003cgcs-key-id>'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.secret_access_key`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '\u003cgcs-access-key>'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.bucket`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '\u003cgcs-bucket-name>'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.endpoint`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'storage.googleapis.com'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.region`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'us-east-1'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.use_ssl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'true'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.presign_expiry`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '1h'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`osmedeus`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` storage.enabled`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'true'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`verify your setup by sending a sample message with utility function `,_jsx(_components.code,{children:`osmedeus eval 'cdn_ls_tree()'`})]}),`\n`,_jsx(Heading,{level:`2`,id:`full-notification-and-cdn-configuration`,children:`Full Notification and CDN Configuration`}),`\n`,_jsx(Expandable,{title:`Full Notification and CDN Configuration`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`115`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`115`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# =============================================================================`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Notification Configuration`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# =============================================================================`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Send notifications when scans complete or find interesting results`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`notification`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Notification provider: \"telegram\" (future: slack, discord, webhook)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`telegram`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Master switch to enable/disable all notifications`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Telegram bot settings`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Create a bot via @BotFather and get the token`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Get your chat ID by messaging @userinfobot`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` telegram`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Bot token from @BotFather`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` bot_token`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Chat ID to send messages to (can be user or group)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` chat_id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Enable Telegram notifications`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Channel map for sending to specific channels/groups by name`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Use notify_telegram_channel(\"#name\", \"message\") or send_telegram_file_channel(\"#name\", \"/path/to/file\")`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # You can also use numeric chat IDs directly: notify_telegram_channel(\"-1001234567890\", \"message\")`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` telegram_channel_map`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # alerts: -1001234567890`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # reports: -1009876543210`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Webhook settings`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Configure multiple webhook endpoints for notifications`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Webhooks are triggered on workflow events (completed, failed, etc.)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` webhooks`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Example webhook configuration`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://example.com/webhook\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Enable/disable this webhook`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Custom HTTP headers (e.g., for authentication)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` headers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` Authorization`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Bearer your-token-here\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` Content-Type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"application/json\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Request timeout in seconds (default: 30)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` timeout`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`30`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Number of retry attempts on failure (default: 3)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` retry_count`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Skip TLS certificate verification (default: false)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Set to true for self-signed certificates`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` skip_tls_verify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Event filter - only trigger for these events (empty = all events)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Available events: workflow_completed, workflow_failed, workflow_cancelled`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` events`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`workflow_completed`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`workflow_failed`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Second webhook example (e.g., Slack incoming webhook)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # - url: \"https://hooks.slack.com/services/xxx/yyy/zzz\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # enabled: false`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # headers: {}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # events:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # - workflow_completed`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# =============================================================================`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Cloud Storage Configuration (Optional)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# =============================================================================`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# S3-compatible storage for backing up scan results`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Supports AWS S3, MinIO, Cloudflare R2, Google Cloud Storage, DigitalOcean Spaces, Oracle OCI`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`storage`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Storage provider: \"s3\", \"minio\", \"r2\", \"gcs\", \"spaces\", \"oci\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # The provider determines endpoint resolution and default settings`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`s3`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Storage endpoint URL (auto-resolved for most providers)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Leave empty to auto-resolve based on provider and region/account_id`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Explicit examples:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # AWS S3: \"s3.us-east-1.amazonaws.com\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # MinIO: \"localhost:9000\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # R2: Will auto-resolve from account_id`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # GCS: \"storage.googleapis.com\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Spaces: Will auto-resolve from region (e.g., \"nyc3.digitaloceanspaces.com\")`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # OCI: Will auto-resolve from account_id (namespace) and region`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` endpoint`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Access credentials`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` access_key_id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` secret_access_key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Bucket name for storing results`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` bucket`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Cloud region (e.g., us-east-1, eu-west-1)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Required for: s3, spaces, oci`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` region`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`us-east-1`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Account ID or Namespace (provider-specific)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # R2: Your Cloudflare account ID`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # OCI: Your Object Storage namespace`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` account_id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Use SSL/TLS for connections (default: true for cloud providers)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` use_ssl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Force path-style URLs (auto-configured per provider)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Set true for MinIO, R2, OCI; false for S3, GCS, Spaces`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` path_style`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Default presigned URL expiry (e.g., \"1h\", \"30m\", \"24h\")`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Used by cdnGetPresignedURL when no expiry is specified`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` presign_expiry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"1h\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Enable cloud storage uploads`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`}),`\n`]})})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Notification and CDN Configuration","description":"This guide covers advanced configuration options including notification and CDN setup","icon":"bells","href":"/advanced/notification-and-cdn","hidden":false}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Notification Configuration","slug":"notification-configuration","depth":2,"children":[{"title":"How to get your telegram token and channel ID","slug":"how-to-get-your-telegram-token-and-channel-id","depth":3,"children":[]}]},{"title":"CDN Configuration","slug":"cdn-configuration","depth":2,"children":[{"title":"Cloudflare R2","slug":"cloudflare-r2","depth":3,"children":[]},{"title":"Google Cloud Storage","slug":"google-cloud-storage","depth":3,"children":[]}]},{"title":"Full Notification and CDN Configuration","slug":"full-notification-and-cdn-configuration","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"osmedeus","siteName":"Osmedeus Docs","title":"Notification and CDN Configuration - Osmedeus Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-28T05:48:31.397Z","originalFileLocation":"advanced/notification-and-cdn.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"This guide covers advanced configuration options including notification and CDN setup\">\u003cmeta data-mint-head name=\"application-name\" content=\"Osmedeus Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/osmedeus/qvNuVPpvBcJJ9KMg/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/osmedeus/qvNuVPpvBcJJ9KMg/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/osmedeus/qvNuVPpvBcJJ9KMg/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/osmedeus/qvNuVPpvBcJJ9KMg/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/osmedeus/qvNuVPpvBcJJ9KMg/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/osmedeus/qvNuVPpvBcJJ9KMg/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/osmedeus/qvNuVPpvBcJJ9KMg/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/osmedeus/qvNuVPpvBcJJ9KMg/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/osmedeus/qvNuVPpvBcJJ9KMg/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Notification and CDN Configuration - Osmedeus Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"A Modern Orchestration Engine for Security\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Osmedeus Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.osmedeus.org/advanced/notification-and-cdn\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://raw.githubusercontent.com/osmedeus/assets/refs/heads/main/osm-banner.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Notification and CDN Configuration - Osmedeus Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"A Modern Orchestration Engine for Security\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://raw.githubusercontent.com/osmedeus/assets/refs/heads/main/osm-banner.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/osmedeus/qvNuVPpvBcJJ9KMg/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Osmedeus Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#8B5CF6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.osmedeus.org/advanced/notification-and-cdn\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/advanced/notification-and-cdn.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.osmedeus.org/#organization\",\"name\":\"Osmedeus Docs\",\"url\":\"https://docs.osmedeus.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/osmedeus/QiTXLQ_BxGicl1Z6/logo/osm.png?fit=max\u0026auto=format\u0026n=QiTXLQ_BxGicl1Z6\u0026q=85\u0026s=e6312f264cc56f455ff45ec20e0ae1bd\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.osmedeus.org#website\",\"name\":\"Osmedeus Docs\",\"url\":\"https://docs.osmedeus.org\",\"publisher\":{\"@id\":\"https://docs.osmedeus.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.osmedeus.org/advanced/notification-and-cdn#webpage\",\"url\":\"https://docs.osmedeus.org/advanced/notification-and-cdn\",\"name\":\"Notification and CDN Configuration\",\"description\":\"This guide covers advanced configuration options including notification and CDN setup\",\"dateModified\":\"2026-01-28T05:48:31.397Z\",\"isPartOf\":{\"@id\":\"https://docs.osmedeus.org#website\"},\"breadcrumb\":{\"@id\":\"https://docs.osmedeus.org/advanced/notification-and-cdn#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.osmedeus.org/advanced/notification-and-cdn#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Advanced Usage\",\"item\":\"https://docs.osmedeus.org/advanced/api-key-configuration\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Notification and CDN Configuration\",\"item\":\"https://docs.osmedeus.org/advanced/notification-and-cdn\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.osmedeus.org/advanced/notification-and-cdn#article\",\"headline\":\"Notification and CDN Configuration\",\"name\":\"Notification and CDN Configuration\",\"description\":\"This guide covers advanced configuration options including notification and CDN setup\",\"url\":\"https://docs.osmedeus.org/advanced/notification-and-cdn\",\"mainEntityOfPage\":{\"@id\":\"https://docs.osmedeus.org/advanced/notification-and-cdn#webpage\"},\"image\":\"https://raw.githubusercontent.com/osmedeus/assets/refs/heads/main/osm-banner.png\",\"dateModified\":\"2026-01-28T05:48:31.397Z\",\"publisher\":{\"@id\":\"https://docs.osmedeus.org/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.osmedeus.org#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Osmedeus Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Osmedeus Docs","nav":{"global":{"anchors":[{"anchor":"Contact","icon":"x-twitter","href":"https://x.com/j3ssie"},{"anchor":"Sponring","icon":"hands-holding-diamond","href":"/sponsor"},{"anchor":"Roadmap","icon":"map","href":"/others/roadmap"}]},"tabs":[{"tab":"Getting Started","groups":[{"group":"Getting Started","icon":"rocket","pages":[{"title":"Introduction","icon":"hand-wave","href":""},{"title":"Quickstart","icon":"rocket","href":"/quickstart"},{"title":"CLI Interface","icon":"terminal","href":"/getting-started/cli"},{"title":"Web UI","icon":"browsers","href":"/getting-started/web-ui"},{"title":"Basic Configuration","icon":"gear","href":"/getting-started/basic-setup"},{"title":"Docker Installation \u0026 Setup","icon":"docker","href":"/getting-started/docker-setup"}]},{"group":"Advanced Usage","icon":"hat-wizard","pages":[{"title":"Extra Configuration","description":"Multiple ways to install Osmedeus","icon":"flask-gear","href":"/advanced/api-key-configuration"},{"title":"Notification and CDN Configuration","icon":"bells","href":"/advanced/notification-and-cdn"},{"title":"Deployment","description":"Build, deploy, and run Osmedeus in various environments","icon":"gopuram","href":"/advanced/deployment"},{"title":"Event-Driven Triggers","icon":"bolt","href":"/advanced/event-driven"},{"title":"Distributed Execution","icon":"chart-network","href":"/advanced/distributed"},{"title":"Development","icon":"code-branch","href":"/advanced/development"},{"title":"Cloud Usage Guide","icon":"book-open","href":"/cloud/usage-guide"},{"title":"Writing Your First Workflow","icon":"diagram-project","href":"/advanced/writing-your-first-workflow"},{"title":"LLM \u0026 Agents Integration","icon":"brain","href":"/advanced/llm"}]},{"group":"Understand Architecture","icon":"lightbulb","pages":[{"title":"Architecture Overview","icon":"sitemap","mode":"wide","href":"/architecture/index"},{"title":"Workflow Architecture","icon":"diagram-project","href":"/architecture/workflows"},{"title":"Runners","icon":"play","href":"/architecture/runners"},{"title":"Template Engine Architecture","icon":"wand-magic-sparkles","href":"/architecture/templates"}]},{"group":"Workflows","icon":"chart-diagram","pages":[{"title":"Workflow Overview","icon":"square-list","href":"/workflows/overview"},{"title":"Flow Workflows","icon":"arrows-split-up-and-left","href":"/workflows/flows"},{"title":"Variables and Exports","icon":"arrow-right-arrow-left","href":"/workflows/variables"},{"title":"Control Flow","icon":"code-branch","href":"/workflows/control-flow"},{"title":"Step Types","icon":"list-check","href":"/workflows/step-types"}]},{"group":"Functions","icon":"cube","pages":[{"title":"Functions Overview","icon":"lightbulb","href":"/functions/overview"},{"title":"Functions Reference","icon":"list","href":"/functions/reference"}]},{"group":"Cloud","icon":"clouds","pages":[{"title":"Cloud Usage Guide","icon":"book-open","href":"/cloud/usage-guide"},{"title":"Cloud Quick Reference","icon":"bolt","href":"/cloud/quick-reference"},{"title":"Cloud Cheatsheet","icon":"list-check","href":"/cloud/cheatsheet"},{"title":"Cloud Usage Examples","icon":"rectangle-terminal","href":"/cloud/usage-examples"},{"title":"AWS Provider Guide","icon":"aws","href":"/cloud/provider-aws"},{"title":"GCP Provider Guide","icon":"google","href":"/cloud/provider-gcp"},{"title":"Hetzner Provider Guide","icon":"server","href":"/cloud/provider-hetzner"}]},{"group":"Advanced Topics \u0026 Extending Osmedeus","icon":"cube","pages":[{"title":"Using Osmedeus as a Library","icon":"code","href":"/advanced/library"},{"title":"Adding Runners","icon":"sliders","href":"/extending/runners"},{"title":"Adding Step Types","icon":"layer-group","href":"/extending/step-types"},{"title":"Adding Functions","icon":"function","href":"/extending/functions"},{"title":"Adding CLI Commands","icon":"command","href":"/extending/cli-commands"},{"title":"Scheduling \u0026 Queue","icon":"clock","href":"/advanced/scheduling"},{"title":"Snapshots","icon":"arrow-down-to-line","href":"/advanced/snapshots"}]},{"group":"Reference","icon":"book","pages":[{"title":"Workflow Schema Reference","icon":"diagram-project","href":"/reference/workflow-schema"},{"title":"Type Reference","icon":"brackets","href":"/reference/types"},{"title":"Default Variables Reference","icon":"code-simple","href":"/reference/variables"},{"title":"Osmedeus API Documentation","icon":"plug","href":"/api-references/index"},{"title":"FAQs","icon":"block-question","href":"/others/faq"},{"title":"Security Warning","icon":"triangle-exclamation","href":"/others/security-warning"},{"title":"Premium Edition","icon":"diamonds-4","href":"/others/premium-edition"}]}]},{"tab":"Advanced Usage","groups":[{"group":"Advanced Usage","icon":"hat-wizard","pages":[{"title":"Extra Configuration","description":"Multiple ways to install Osmedeus","icon":"flask-gear","href":"/advanced/api-key-configuration"},{"title":"Notification and CDN Configuration","icon":"bells","href":"/advanced/notification-and-cdn"},{"title":"Deployment","description":"Build, deploy, and run Osmedeus in various environments","icon":"gopuram","href":"/advanced/deployment"},{"title":"Event-Driven Triggers","icon":"bolt","href":"/advanced/event-driven"},{"title":"Distributed Execution","icon":"chart-network","href":"/advanced/distributed"},{"title":"Development","icon":"code-branch","href":"/advanced/development"},{"title":"Writing Your First Workflow","icon":"diagram-project","href":"/advanced/writing-your-first-workflow"},{"title":"LLM \u0026 Agents Integration","icon":"brain","href":"/advanced/llm"}]},{"group":"Understand Architecture","icon":"lightbulb","pages":[{"title":"Architecture Overview","icon":"sitemap","mode":"wide","href":"/architecture/index"},{"title":"Workflow Architecture","icon":"diagram-project","href":"/architecture/workflows"},{"title":"Runners","icon":"play","href":"/architecture/runners"},{"title":"Template Engine Architecture","icon":"wand-magic-sparkles","href":"/architecture/templates"}]},{"group":"Cloud","icon":"clouds","pages":[{"title":"Cloud Usage Guide","icon":"book-open","href":"/cloud/usage-guide"},{"title":"Cloud Quick Reference","icon":"bolt","href":"/cloud/quick-reference"},{"title":"Cloud Cheatsheet","icon":"list-check","href":"/cloud/cheatsheet"},{"title":"Cloud Usage Examples","icon":"rectangle-terminal","href":"/cloud/usage-examples"},{"title":"AWS Provider Guide","icon":"aws","href":"/cloud/provider-aws"},{"title":"GCP Provider Guide","icon":"google","href":"/cloud/provider-gcp"},{"title":"Hetzner Provider Guide","icon":"server","href":"/cloud/provider-hetzner"}]},{"group":"Advanced Topics \u0026 Extending Osmedeus","icon":"cube","pages":[{"title":"Using Osmedeus as a Library","icon":"code","href":"/advanced/library"},{"title":"Adding Runners","icon":"sliders","href":"/extending/runners"},{"title":"Adding Step Types","icon":"layer-group","href":"/extending/step-types"},{"title":"Adding Functions","icon":"function","href":"/extending/functions"},{"title":"Adding CLI Commands","icon":"command","href":"/extending/cli-commands"},{"title":"Scheduling \u0026 Queue","icon":"clock","href":"/advanced/scheduling"},{"title":"Snapshots","icon":"arrow-down-to-line","href":"/advanced/snapshots"}]}]},{"tab":"Reference \u0026 FAQ","pages":[{"title":"Reference \u0026 FAQ","href":"/reference/workflow-schema"}]}]},"basePath":"","title":"Notification and CDN Configuration - Osmedeus Docs","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-PS-3COT9.js","DynamicMarkdown-BcnBltEQ.js","zoom-image-lightbox-B4-wUcHm.js","lightbox-handle-r17bVUz3.js"]}