PyPI (pip, uv)
Point your Python tooling at Dependably to install private packages, proxy public ones, and publish your own. This guide covers both pip and uv.
You will need your base URL and a token — see
Getting started. The examples use repo.example.com;
substitute your own. Python tools authenticate with HTTP Basic: the token
goes in the password field and the username is ignored, so any username works
(the examples use user). Your package index URL is:
https://repo.example.com/simple/
Configure
Use pip's own command — it writes the index URL into pip's config for you, so there are no files to edit by hand:
pip config set --user global.index-url https://user:<your token>@repo.example.com/simple/
For uv, point it at the same index URL. uv reads the credentials straight from the URL:
uv add --default-index https://user:<your token>@repo.example.com/simple/ requests
Plain HTTP: if your instance is served over
http://, also runpip config set --user global.trusted-host repo.example.com(pip) or pass--allow-insecure-host repo.example.com(uv). Prefer HTTPS where you can.
Verify
pip config list # should show your Dependably index-url
pip install requests # or: uv add requests
Your first install records an entry on the Activity page in the web UI — check there to confirm packages are flowing through Dependably.
Publishing
Build your distribution, then upload with twine. The upload endpoint is
/pypi/legacy/:
twine upload \
--repository-url https://repo.example.com/pypi/legacy/ \
-u user -p <your token> \
dist/*
Publishing requires a token with a push scope (push only or push & pull) — see Access tokens.
Revert
pip config unset --user global.index-url
uv took the index per-command (--default-index), so there is nothing
persistent to undo unless you exported it as UV_DEFAULT_INDEX — in which case
unset that too.