---
area: "Learn"
parent: "Extensions chapter"
url: "https://unpoly.com/learn/protocol-implementations"
---
<nav aria-label="Unpoly docs">[All docs](https://unpoly.com/index.md) · [Extensions chapter](https://unpoly.com/learn/extensions.md)</nav>

# Protocol implementations

These libraries implement Unpoly's [optional server protocol](https://unpoly.com/api/up.protocol.md) for a specific language or framework, so your backend can inspect and manipulate Unpoly's rendering without handling raw HTTP headers itself.

All of them are optional. See [Server protocol](https://unpoly.com/learn/server-protocol.md) for what the protocol does and when your app benefits from it.

## Existing implementations {#implementations}

| Language | Framework | Protocol implementation |
| --- | --- | --- |
| Elixir | Plug (Phoenix, …) | [`ex_unpoly`](https://github.com/webstronauts/ex_unpoly) |
| Groovy | Grace (Grails) | [`grace-unpoly`](https://github.com/grace-plugins/grace-unpoly) |
| Node.js | AdonisJS | [`adonis-unpoly`](https://github.com/batosai/adonis-unpoly) |
| PHP | Middleware (Laravel, Symfony, …) | [`php-unpoly`](https://github.com/webstronauts/php-unpoly) |
| Python | Framework-agnostic (Django, Starlette, …) | [`unpoly`](https://gitlab.com/rocketduck/python-unpoly) |
| Python | Django | [`django-unpoly`](https://github.com/jwaschkau/django-unpoly) |
| Python | Django | [`unpoly_django`](https://github.com/thinkwelltwd/unpoly_django) |
| Ruby | Ruby on Rails | [`unpoly-rails`](https://github.com/unpoly/unpoly-rails) |
| Ruby | Roda | [`roda-unpoly`](https://github.com/adam12/roda-unpoly) |
| Ruby | Rack (Hanami, Padrino, Sinatra) | [`rack-unpoly`](https://github.com/adam12/rack-unpoly) |
| Rust | Axum | [`unpoly`](https://crates.io/crates/unpoly) |

### Adding implementations to the list {#adding-implementations-to-the-list}

If you have discovered a new implementation, please [edit this page on GitHub](https://github.com/unpoly/unpoly/blob/master/src/unpoly/pages/protocol-implementations.md) and send a pull request.

<nav aria-label="Reading order">

- [Previous: Agent skill](https://unpoly.com/learn/skill.md)
- [Next: Supporting legacy browsers](https://unpoly.com/learn/legacy-browsers.md)

</nav>

