// the find
karrioapi/karrio
Programmable Shipping APIs (self-hosted)
Karrio is a self-hosted shipping abstraction layer that normalizes APIs from FedEx, UPS, DHL, Canada Post, and ~20 other carriers into a single REST/GraphQL interface. You get rate shopping, label generation, and package tracking without signing a SaaS contract. Aimed at platforms, 3PLs, and any dev team tired of writing the same carrier XML/JSON wrappers for the fifth time.
The plugin architecture is genuinely well-thought-out — each carrier is an isolated Python package under `/community`, so adding a carrier doesn't touch the core and you can publish proprietary connectors without GPL exposure. The `docker compose up` cold start actually works and gets you a running server plus dashboard in under two minutes. The MCP server integration is a practical addition — asking an AI assistant to rate-shop DHL vs FedEx for a specific package is more useful than it sounds for ops workflows. LGPL-3.0 on the core means you can embed it in commercial products without open-sourcing your whole stack.
Multi-tenancy (essential for any platform use case) is locked behind the enterprise license — the open-source tier is functionally single-tenant, which cuts off a large part of the stated audience. The Django/Python stack is fine but the repo is large and the local dev setup requires understanding the submodule structure (`git submodule update --init community`) before you can even run tests; the contributing docs don't front-load this well. At 738 stars the community is thin, so carrier-specific bugs can sit open for months — if your core carrier isn't FedEx or DHL, check the issue tracker before committing. The dual-license model creates real uncertainty: some features listed in the README silently require an EE subscription and there's no clear in-repo marker on which API endpoints are gated.