# Integration recipes

> How the stacks a small Python team already runs connect to Pyrula: model providers, Postgres without Redis, webhook-started runs, other tracing libraries, serverless, GitLab CI and OTLP backends.

Source: https://docs.pyrula.io/getting-started/recipes/

Each page starts from something you already run and says which Pyrula path it takes, what that
path journals and what it does not. Where a recipe needs something Pyrula does not have, the page
says so. Python blocks marked `run` execute in the docs gate, offline: blocks that would call a provider
only construct the clients. `fragment` blocks are checked for syntax, imports and call signatures
only, and YAML and unmarked shell blocks are not run.

| You have | Page |
|---|---|
| OpenAI, Azure OpenAI, Gemini, Bedrock, Ollama, vLLM, Groq or OpenRouter | [LLM providers](https://docs.pyrula.io/getting-started/recipes/llm-providers.md) |
| Postgres and no Redis | [Postgres, not Redis](https://docs.pyrula.io/getting-started/recipes/postgres-not-redis.md) |
| A webhook, an S3 notification or an inbound email | [Runs started by events](https://docs.pyrula.io/getting-started/recipes/event-triggered-starts.md) |
| LlamaIndex, CrewAI or another traced framework | [Observe-only frameworks](https://docs.pyrula.io/getting-started/recipes/observe-only.md) |
| Lambda or Cloud Functions | [Serverless](https://docs.pyrula.io/getting-started/recipes/serverless.md) |
| GitLab CI or another runner | [Replay checks outside GitHub](https://docs.pyrula.io/getting-started/recipes/ci-outside-github.md) |
| Logfire or another OTLP backend | [Logfire and other OTLP backends](https://docs.pyrula.io/getting-started/recipes/otlp-backends.md) |

Not covered: alerts into Microsoft Teams or Discord. Cloud's generic webhook channel could carry
them, but no Teams or Discord endpoint has been sent a test alert, so there is no recipe yet.
