Provider-agnostic AI agent/skill/prompt runner
Project description
uio
Just as Linux UIO lets kernel device drivers export their interfaces directly to userspace — eliminating the need for a full kernel module per device — uio lets AI agent definitions (plain markdown files) export their capabilities directly to a CLI, eliminating the need for a custom integration per project.
uio is a lightweight, provider-agnostic framework for defining and running AI agents, skills, and prompts. Definitions live as markdown files with YAML frontmatter. The uio CLI discovers and executes them against any supported LLM provider.
Key concepts
| Concept | What it is |
|---|---|
| Agent | A multi-turn agentic loop that can execute shell commands and call MCP tools |
| Skill | A reusable module invoked by agents to perform a focused, composable task |
| Prompt | A single-shot LLM instruction for one well-defined workflow |
Documentation
Full documentation lives in docs/ — covering installation, core concepts, a step-by-step quickstart, CLI reference, configuration, providers, MCP integration, the chat REPL, cost ledger, registry, writing definitions, package internals, and GitHub App identity agents.
See Use Cases for end-to-end worked examples.
Quickstart
pip install uio-ai
# Scaffold .uio/ and install bundled examples
uio init --examples
# Run one of the bundled examples
uio skill run summarise "Your text here"
uio agent run repo-health
# Interactive streaming chat
uio chat
# View token spend
uio cost
Definitions live in .uio/:
my-project/
└── .uio/
├── agents/ my-agent.agent.md
├── skills/ my-skill.skill.md
└── prompts/ my-prompt.prompt.md
See Writing Definitions for the full file format and authoring guide.
GitHub App identities
uio supports dedicated GitHub App identities for agents that act on GitHub — separate non-human service accounts for planning, coding, and reviewing work:
| Identity | Agent | Operations |
|---|---|---|
| AI Planner | github-planner |
Create issues · Comment on issues and PRs · Summarize milestones |
| AI Coder | github-coder |
Create branches · Commit code · Open pull requests |
| AI Reviewer | github-reviewer |
Read diffs · Post structured review comments |
Declare the identity in your agent's frontmatter:
---
name: my-github-agent
github-identity: coder # planner | coder | reviewer
tools: [terminal, github]
---
uio obtains a short-lived GitHub App installation token before the agent loop starts and
sets GH_TOKEN — both the gh CLI and GitHub MCP server pick it up automatically. All
three agents are available in uio-registry.
See Governance and Provisioning guides for setup.
Registry
Discover and install community definitions from remote registries — Git repos with a registry.yaml manifest. No central server required.
# Add a registry to uio.toml:
# [[registries]]
# name = "official"
# url = "https://github.com/jomkz/uio-registry"
# ref = "main"
uio registry list # show configured registries
uio registry search summarise # search by name, description, or tag
uio registry install summarise # copy definition into .uio/
uio registry install repo-health --pin # install and print a pinnable SHA
uio registry update # refresh cached manifests
Installed definitions are plain local files — no live runtime dependency on the registry.
Providers
Auto-routes across available providers in order: Gemini → OpenAI → Ollama. Override with --provider or uio.toml.
| Provider | Large model | Small model |
|---|---|---|
gemini |
gemini-2.5-flash |
gemini-2.0-flash-lite |
openai |
gpt-4o |
gpt-4o-mini |
ollama |
llama3.1:8b |
llama3.1:8b |
Container image
# bash/zsh
docker run --rm \
-e GEMINI_API_KEY=your-key \
-e GITHUB_PERSONAL_ACCESS_TOKEN=ghp_... \
-v $(pwd):/workspace \
ghcr.io/jomkz/uio agent run repo-health
# PowerShell (Windows) — use ${PWD} instead of $(pwd)
docker run --rm `
-e GEMINI_API_KEY=your-key `
-e GITHUB_PERSONAL_ACCESS_TOKEN=ghp_... `
-v ${PWD}:/workspace `
ghcr.io/jomkz/uio agent run repo-health
# Cross-platform — docker compose avoids the $(pwd) issue entirely
docker compose run --rm uio agent run repo-health
The image includes Node.js and pre-warmed MCP servers (@github/github-mcp-server,
server-filesystem, server-fetch, server-memory). A docker-compose.yml for local Ollama
use is included in the repo. See Container image for full details.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uio_ai-0.1.2rc2.tar.gz.
File metadata
- Download URL: uio_ai-0.1.2rc2.tar.gz
- Upload date:
- Size: 65.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2da879b30cbc8a96d9506d6eaf748a85a2369baaede8dd8aecec5fe912c846fd
|
|
| MD5 |
4aa4ecefef8d6b2049be50b3f26ea5b1
|
|
| BLAKE2b-256 |
46eb5790afcd4f4c622aeac09fbd171743b39f41b5b38ef84a4af3b7b27c5909
|
Provenance
The following attestation bundles were made for uio_ai-0.1.2rc2.tar.gz:
Publisher:
release.yml on jomkz/uio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
uio_ai-0.1.2rc2.tar.gz -
Subject digest:
2da879b30cbc8a96d9506d6eaf748a85a2369baaede8dd8aecec5fe912c846fd - Sigstore transparency entry: 1415616173
- Sigstore integration time:
-
Permalink:
jomkz/uio@b1c51995a97f328cedc81fcc5e66f2e9302a7f4e -
Branch / Tag:
refs/tags/v0.1.2-rc2 - Owner: https://github.com/jomkz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b1c51995a97f328cedc81fcc5e66f2e9302a7f4e -
Trigger Event:
push
-
Statement type:
File details
Details for the file uio_ai-0.1.2rc2-py3-none-any.whl.
File metadata
- Download URL: uio_ai-0.1.2rc2-py3-none-any.whl
- Upload date:
- Size: 58.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccd13bca5f89f96340e94311daa8091c969d102e00b9e07bb4f25ef7868446f7
|
|
| MD5 |
7c5cb37003a9ad04c17e9da02250cc1a
|
|
| BLAKE2b-256 |
bdc12daf7e2ad12f8afa03fa155084750a424319f3ee08b4c9e58d0b730bb70f
|
Provenance
The following attestation bundles were made for uio_ai-0.1.2rc2-py3-none-any.whl:
Publisher:
release.yml on jomkz/uio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
uio_ai-0.1.2rc2-py3-none-any.whl -
Subject digest:
ccd13bca5f89f96340e94311daa8091c969d102e00b9e07bb4f25ef7868446f7 - Sigstore transparency entry: 1415616308
- Sigstore integration time:
-
Permalink:
jomkz/uio@b1c51995a97f328cedc81fcc5e66f2e9302a7f4e -
Branch / Tag:
refs/tags/v0.1.2-rc2 - Owner: https://github.com/jomkz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b1c51995a97f328cedc81fcc5e66f2e9302a7f4e -
Trigger Event:
push
-
Statement type: