Orchestrate 10 AI agent teams in isolated Podman containers, communicating via outo-chatserver
Project description
outo-10team
Orchestrate 10 AI agent teams in isolated Podman containers, communicating via outo-chatserver
Features
- 10 Specialized AI Teams — Each team has a dedicated role (leader, research, dev, design, etc.)
- Powered by outo-agentcore — Each container runs
outo-agentcoreas the agent runtime, handling LLM interactions, tool execution, and agent orchestration - Isolated Containers — Each team runs in its own Podman container with resource limits
- Chatserver Integration — Teams communicate through outo-chatserver
- OpenAI-Compatible — Works with any OpenAI-compatible API (OpenAI, Ollama, vLLM, etc.)
- Custom Team Names — Rename teams to match your workflow
- Skill Sync — Sync agent skills from host to containers
Prerequisites
- Python 3.11+
- Podman installed and running
- outo-chatserver running
- An OpenAI-compatible API endpoint
Installation
pip install outo-10team
Quick Start
1. Setup
Run the interactive setup wizard:
outo-10team setup
You'll be prompted for:
| Prompt | Description | Default |
|---|---|---|
| API base URL | OpenAI-compatible endpoint | http://localhost:11434/v1 |
| API key | Authentication key (leave empty for local) | (empty) |
| Default model | Model name to use | gpt-4o |
| Chatserver URL | outo-chatserver address | http://localhost:18279 |
| Bot password | Shared password for all team bots | outo-10team-bot-2026 |
| Workspace ID | (required) Chatserver workspace to join | — |
You can also provide values via flags:
outo-10team setup \
--provider-url http://localhost:11434/v1 \
--api-key sk-xxx \
--model gpt-4o \
--chatserver-url http://localhost:18279 \
--workspace-id my-workspace \
--bot-password my-secret \
--skip-team-names
2. Build Container Image
outo-10team build
Builds the Podman image (outo-10team:latest) used by all team containers.
3. Run All Teams
outo-10team run
Starts all 10 team containers and joins them to the configured workspace.
Commands
outo-10team setup
Configure LLM provider, chatserver connection, and team names.
outo-10team setup [OPTIONS]
Options:
--provider-url TEXT OpenAI-compatible API base URL
--api-key TEXT API key for provider
--model TEXT Default model name
--chatserver-url TEXT Chatserver URL
--workspace-id TEXT Workspace ID (required)
--bot-password TEXT Bot password for all teams
--mem-limit TEXT Memory limit per container [default: 512m]
--cpu-shares INT CPU shares per container [default: 512]
--pids-limit INT PID limit per container [default: 100]
--skip-team-names Use default team names without prompting
--help Show this message and exit.
outo-10team build
Build the Podman container image from the bundled Containerfile.
outo-10team build
outo-10team run
Start all team containers. Cleans up existing containers first, then creates fresh ones.
outo-10team run
outo-10team status
Display a table showing the status of all team containers.
outo-10team status
Example output:
┌──────────────┬─────────┬──────────┐
│ Name │ Status │ Team │
├──────────────┼─────────┼──────────┤
│ outo10team-main │ running │ main │
│ outo10team-research│ running │ research │
│ ... │ │ │
└──────────────┴─────────┴──────────┘
outo-10team logs TEAM
Stream logs from a specific team container. Accepts either the default or custom team name.
outo-10team logs TEAM [OPTIONS]
Arguments:
TEAM Team name (e.g., "main", "research", or your custom name)
Options:
-n, --lines INT Number of log lines to show [default: 50]
--help Show this message and exit.
Examples:
# View last 50 lines from the dev team
outo-10team logs dev
# View last 200 lines from the research team
outo-10team logs research -n 200
outo-10team stop
Stop and remove all outo-10team containers.
outo-10team stop
outo-10team skill sync
Sync agent skills from the host (~/.agents/skills/) to running containers.
outo-10team skill sync [TEAM]
Arguments:
TEAM Optional. Sync to a specific team only. Omit to sync all.
Examples:
# Sync skills to all running containers
outo-10team skill sync
# Sync skills to a specific team
outo-10team skill sync dev
Global Options
outo-10team [OPTIONS] COMMAND [ARGS]...
Options:
--version Show version
--config-dir PATH Custom config directory (default: ~/.outo-10team/)
--help Show this message and exit.
Architecture
Host Machine
├── ~/.outo-10team/
│ ├── config.json # Main configuration
│ ├── agents/{teamname}/*.md # Agent definitions
│ ├── data/{teamname}/ # Per-team persistent data
│ └── shared/ # Shared data (wiki, etc.)
│
└── Podman (10 containers)
├── Arch Linux base image
├── outo-agentcore (agent runtime)
│ ├── outoac CLI — runs agent inference via LLM
│ ├── tool execution
│ └── agent orchestration
└── watcher.py (polls chatserver REST API → triggers outoac)
How It Works
- watcher.py runs inside each container, polling outo-chatserver for new messages
- When a message arrives, the watcher invokes
outoac chat(from outo-agentcore) with the message and agent name - outo-agentcore processes the message using the configured LLM provider, executes any tools, and returns a response
- The watcher sends the response back to chatserver
Related Projects
| Project | Description |
|---|---|
| outo-agentcore | Agent runtime powering each container — handles LLM calls, tool use, and orchestration |
| outo-chatserver | Chat server that teams communicate through |
Teams
| Default Name | Role | Description |
|---|---|---|
main |
Leader | Coordinator — orchestrates and delegates tasks |
research |
Research | Investigates topics, gathers information |
dev |
Development | Writes code, implements features |
design |
Design | UI/UX design, visual assets |
data |
Data | Data analysis, metrics, insights |
security |
Security | Security audits, vulnerability checks |
infra |
Infra/DevOps | Infrastructure, deployment, CI/CD |
qa |
QA | Quality assurance, testing |
docs |
Docs | Documentation, guides, API references |
support |
Support | Customer support, issue triage |
Configuration
Configuration is stored at ~/.outo-10team/config.json:
{
"provider": {
"base_url": "http://localhost:11434/v1",
"api_key": "",
"default_model": "gpt-4o"
},
"chatserver": {
"url": "http://localhost:18279",
"bot_password": "outo-10team-bot-2026",
"workspace_id": "my-workspace"
},
"containers": {
"mem_limit": "512m",
"cpu_shares": 512,
"pids_limit": 100
},
"team_names": {}
}
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 outo_10team-0.1.0.tar.gz.
File metadata
- Download URL: outo_10team-0.1.0.tar.gz
- Upload date:
- Size: 114.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e55358ddd1f3bbf5c37a8b9dc2d60a0537bcf466c8471ec0ae4bd99bcea041a
|
|
| MD5 |
832126f7f70d0dd60d7eeda058d68c78
|
|
| BLAKE2b-256 |
34decf6e6c220f5bc08d5f4eba3427265d6942287dab85ef9af4e19255417dfd
|
Provenance
The following attestation bundles were made for outo_10team-0.1.0.tar.gz:
Publisher:
publish.yml on llaa33219/outo-10team
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
outo_10team-0.1.0.tar.gz -
Subject digest:
1e55358ddd1f3bbf5c37a8b9dc2d60a0537bcf466c8471ec0ae4bd99bcea041a - Sigstore transparency entry: 1619396952
- Sigstore integration time:
-
Permalink:
llaa33219/outo-10team@09c1f6dabaa1aea8738f5a960a6ab064dc30c754 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/llaa33219
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@09c1f6dabaa1aea8738f5a960a6ab064dc30c754 -
Trigger Event:
push
-
Statement type:
File details
Details for the file outo_10team-0.1.0-py3-none-any.whl.
File metadata
- Download URL: outo_10team-0.1.0-py3-none-any.whl
- Upload date:
- Size: 61.6 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 |
17fabdeec04fabd11eb07a4e13d3e81f0478438f09755a5e480507163b5c0a11
|
|
| MD5 |
7a181d57527d2e1dd065b87b2891fa90
|
|
| BLAKE2b-256 |
ca1f1d4c40c753b18803c86915168300de8ddb0b70bb6525b2e8909ab3ad9f5d
|
Provenance
The following attestation bundles were made for outo_10team-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on llaa33219/outo-10team
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
outo_10team-0.1.0-py3-none-any.whl -
Subject digest:
17fabdeec04fabd11eb07a4e13d3e81f0478438f09755a5e480507163b5c0a11 - Sigstore transparency entry: 1619397126
- Sigstore integration time:
-
Permalink:
llaa33219/outo-10team@09c1f6dabaa1aea8738f5a960a6ab064dc30c754 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/llaa33219
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@09c1f6dabaa1aea8738f5a960a6ab064dc30c754 -
Trigger Event:
push
-
Statement type: