Lorica is a fork of Cloudflare Pingora, modified to serve as a dashboard-first reverse proxy product.
| Field | Value |
|---|---|
| Upstream repository | https://github.com/cloudflare/pingora |
| Upstream license | Apache-2.0 |
| Fork date | 2026-03-29 |
| Upstream version at fork | 0.8.0 baseline (upstream main as of the fork date: after the 0.8.0 release of 2026-03-02, before 0.8.1) |
| Git remote | upstream - https://github.com/cloudflare/pingora.git |
All crate names and Rust module paths were renamed:
| Upstream name | Lorica name | Notes |
|---|---|---|
pingora-core |
lorica-core |
Core server framework |
pingora-proxy |
lorica-proxy |
HTTP proxy engine |
pingora-http |
lorica-http |
HTTP utilities |
pingora-error |
lorica-error |
Error types |
pingora-pool |
lorica-pool |
Connection pool |
pingora-timeout |
lorica-timeout |
Timeout utilities |
pingora-header-serde |
lorica-header-serde |
Header serialization |
pingora-runtime |
lorica-runtime |
Tokio runtime wrapper |
pingora-ketama |
lorica-ketama |
Consistent hashing |
pingora-limits |
lorica-limits |
Rate estimator |
pingora-load-balancing |
lorica-lb |
Load balancing strategies |
pingora-cache |
lorica-cache |
HTTP response cache |
pingora-memory-cache |
lorica-memory-cache |
In-memory cache backend |
pingora-lru |
lorica-lru |
LRU eviction |
tinyufo |
tinyufo |
TinyUFO cache algorithm (unchanged) |
Rust imports: all use pingora_* became use lorica_*.
The following upstream crates and features were deleted during the fork:
| Removed | Reason |
|---|---|
pingora-openssl |
Lorica uses rustls exclusively |
pingora-boringssl |
Lorica uses rustls exclusively |
pingora-s2n |
Lorica uses rustls exclusively |
Conditional TLS compilation (#[cfg] blocks) |
Only rustls remains |
| Sentry integration | Cloudflare-specific observability |
cf-rustracing |
Cloudflare-specific tracing |
| Example binaries | Replaced by Lorica's own binary |
| Windows support (787 lines) | Linux-only project |
These crates do not exist in upstream Pingora:
| Crate | Purpose |
|---|---|
lorica |
CLI binary, supervisor, worker orchestration |
lorica-api |
axum REST API, auth, session management |
lorica-config |
SQLite store, migrations, TOML export/import |
lorica-dashboard |
Svelte 5 frontend embedded via rust-embed |
lorica-waf |
WAF engine, OWASP rules, IP blocklist |
lorica-notify |
Alert dispatch (stdout, SMTP, webhook) |
lorica-bench |
SLA monitoring, load testing engine |
lorica-worker |
fork+exec worker isolation, socket passing |
lorica-command |
Protobuf supervisor-worker command channel |
lorica-tls |
SNI resolver, hot-swap, ACME (extends upstream TLS) |
To compare Lorica's forked crates against upstream Pingora:
# Fetch upstream changes
git fetch upstream
# Compare a specific forked crate (account for renaming)
# Example: compare lorica-core against pingora-core
diff <(git show upstream/main:pingora-core/src/server.rs) lorica-core/src/server.rs
# List files changed in a forked crate
diff -rq <(git archive upstream/main pingora-proxy/src | tar -tf -) \
<(ls lorica-proxy/src/)When comparing files across repositories, apply these substitutions:
- Directory:
pingora-{name}-lorica-{name}(exceptpingora-load-balancing-lorica-lb) - Cargo.toml package names:
pingora-{name}-lorica-{name} - Rust imports:
pingora_{name}-lorica_{name} - Feature flags:
pingora_prefix -lorica_prefix (where applicable)
- Security patches in
pingora-core,pingora-proxy,pingora-http- apply to correspondinglorica-*crates - Performance improvements in connection pool, load balancing, cache
- New TLS features in
pingora-rustls(Lorica's TLS is based on this) - Breaking API changes that affect
lorica-proxyintegration points
See NOTICE for full attribution. Lorica is licensed under Apache-2.0, same as upstream Pingora.