Republic
One Python interface for chat, streaming, tool calls, and structured output across AI providers. Republic stops at providers; agent loops, tool execution, and gateways stay in your code.
Quickstart
Republic requires Python 3.11 or later.
python -m pip install republic
export REPUBLIC_OPENAI_API_KEY="your-api-key"
import asyncio
import republic
from republic.events import TextDelta
async def main():
model = republic.get_model("openai:gpt-6-sol")
response = await model.chat("Explain a tool call in one sentence.")
print(response.text)
async with model.stream("Explain how an agent uses a tool result.") as stream:
async for event in stream:
if isinstance(event, TextDelta):
print(event.chunk, end="", flush=True)
asyncio.run(main())
A model is named provider:model. Switch services by changing the name, such as anthropic:MODEL_ID, google:MODEL_ID, or deepseek:MODEL_ID; each reads its key from REPUBLIC_<PROVIDER>_API_KEY. See the provider directory for every supported service.
Documentation
- Quickstart: a first request and a streaming response.
- Providers: services, formats, and credentials.
- Authentication: API keys, CLI logins, and OAuth.
- Guides: tool use, a minimal agent, and structured output.
- Reference: configuration and the provider API, including media input, embeddings, image generation, decision models, history, and custom providers.
- Optional extensions observe call outcomes and retries through one configurable
Extensioninterface.
Development
uv sync
make check
make test
make build
See Contributing for the development workflow.
License
Metadata
Release files for republic 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| republic-0.6.0.tar.gz | 243.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| republic-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 325.3 kB
Release files / republic-0.6.0.tar.gz
| Download URL | republic-0.6.0.tar.gz |
|---|---|
| Size | 243.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3534cbad92e0a25c62d0fe2797031d8e574d3d2f2764d083470d585b163e60c4
|
|
BLAKE2b-256 checksum How to use checksums |
40ca21b99f958e4830f586cfef480725f2a58937fda44a65ee0f50e36418d5ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / republic-0.6.0-py3-none-any.whl
| Download URL | republic-0.6.0-py3-none-any.whl |
|---|---|
| Size | 82.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
78b186ca286c4ba0e7b5cfbd8c3a2a71ed36d20f2bb9292dcb18a652005fde9c
|
|
BLAKE2b-256 checksum How to use checksums |
9e6c734a685c20d2dbe220cca811f989270cc8470db96cfaff645b0c231670d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for republic 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.