---
title: "Heroku Proxying becomes Free Software"
description: "Heroku’s HTTP routing stack has three layers: state synchronization, request routing, and HTTP proxying. The platform team open-sourced the proxying layer as Vegur, an Erlang library that validates, normalizes, and forwards requests between clients and dynos. Unlike a conventional nginx reverse proxy, Vegur’s hosts and configuration are fully programmable, allowing state from hardcoded values, files, databases, or direct updates, while routing algorithms and debugging headers can also remain dynamic. Its delegated capabilities include domain lookup, backend selection, interface choice, resource checkout and checkin, customizable failure pages, per-application or per-backend controls for tunneling 100-continue requests, and upstream or downstream header insertion. Vegur had run in production on Heroku for over a year and powered the Heroku Private Spaces router."
---

# Heroku Proxying becomes Free Software

[Heroku](https://yomu.fyi/company/heroku) · Fred Hebert · Oct 21, 2015

**Type:** Announcement

## Summary

Heroku’s HTTP routing stack has three layers: state synchronization, request routing, and HTTP proxying. The platform team open-sourced the proxying layer as Vegur, an Erlang library that validates, normalizes, and forwards requests between clients and dynos. Unlike a conventional nginx reverse proxy, Vegur’s hosts and configuration are fully programmable, allowing state from hardcoded values, files, databases, or direct updates, while routing algorithms and debugging headers can also remain dynamic. Its delegated capabilities include domain lookup, backend selection, interface choice, resource checkout and checkin, customizable failure pages, per-application or per-backend controls for tunneling 100-continue requests, and upstream or downstream header insertion. Vegur had run in production on Heroku for over a year and powered the Heroku Private Spaces router.

## Context

Existing proxying mechanisms supported fewer of the dynamic features needed at Heroku’s scale. The release was intended to help the community develop routing products and enrich the routing ecosystem.

## Approach / What changed

The HTTP proxying layer was released as Vegur, a programmable Erlang library that compatible routers can use independently of their routing logic. It supports dynamic hosts, configuration, routing algorithms, debugging headers, backend selection, resource management, error pages, request tunneling controls, and header insertion.

## Takeaways

- Vegur separates programmable HTTP proxying from the router’s higher-level routing logic, allowing compatible routers to reuse the proxying layer.
- The library supports domain lookup, backend and interface selection, resource checkout and checkin, customizable failure pages, and upstream or downstream header insertion.
- Vegur had been used in production on Heroku for over a year and also powered routing in Heroku Private Spaces.

**Tags:** [Architecture](https://yomu.fyi/topic/architecture), [Erlang](https://yomu.fyi/topic/erlang), [Open Source](https://yomu.fyi/topic/open-source)

- Source: [Heroku](https://www.heroku.com/blog/vegur-free-software)
- Source URL: https://www.heroku.com/blog/vegur-free-software
- Ingested by Yomu: 2026-09-09T14:24:20.794Z

[Read original post](https://www.heroku.com/blog/vegur-free-software)
