CLI agent tool powered by agentouto SDK
Project description
outo-agentcore
CLI agent tool powered by agentouto SDK
PyPI • Quick Start • CLI • Development
Features
- Powered by agentouto: Full peer-to-peer multi-agent SDK with parallel execution, streaming, background agents
- Agent support: Agents call each other recursively with no orchestrator
- Skills support: Agent Skills specification compliant - reusable instruction packages
- Multi-provider: OpenAI, Anthropic, Google Gemini, and any OpenAI-compatible API (Ollama, vLLM, LM Studio, etc.)
- Session persistence: Continue conversations across runs
- Bash execution: Built-in shell command tool
- Wiki knowledge base: Optional OutoWiki integration for persistent knowledge management
- Simple CLI: No complex TUI, just commands
Installation
# pip
pip install outo-agentcore
# uv (recommended)
uv tool install outo-agentcore
Uninstall
# pip
pip uninstall outo-agentcore
# uv
uv tool uninstall outo-agentcore
To remove all data:
rm -rf ~/.outoac
Quick Start
1. Setup
outoac setup \
--base-url http://localhost:11434/v1 \
--api-key your-key \
--default-model llama4:scout \
--agent-md ~/.outoac/agents/main.md \
--default-agent main
2. Create agent definitions
mkdir -p ~/.outoac/agents
Create ~/.outoac/agents/main.md:
# Coordinator
You coordinate work. Call other agents when needed.
Create ~/.outoac/agents/researcher.md:
# Researcher
You find and organize information from the web.
Create ~/.outoac/agents/writer.md:
# Writer
You create well-structured reports from research.
3. Start chatting
outoac chat "What is the capital of France?"
4. Continue a session
outoac sessions # List sessions
outoac chat "Tell me more" --session <session-id>
CLI Commands
| Command | Description |
|---|---|
outoac setup |
Configure providers and agents |
outoac chat "message" |
Start a chat session |
outoac chat "message" --session <id> |
Continue existing session |
outoac chat "message" --agent <name> |
Use specific agent |
outoac sessions |
List all sessions |
Global Options
| Argument | Description | Default | Example |
|---|---|---|---|
--config, -c |
Path to config.json | ~/.outoac/config.json |
./my-config.json |
Setup Options
| Argument | Description | Default | Example |
|---|---|---|---|
--base-url |
Provider API base URL | - | http://localhost:11434/v1 |
--api-key |
API key for provider | - | sk-xxx |
--default-model |
Default model for provider | - | llama4:scout |
--provider-name |
Provider name | default |
openai |
--agent-md |
Path to main agent markdown | - | ~/.outoac/agents/main.md |
--default-agent |
Default agent for chat | main |
researcher |
Chat Options
| Argument | Description | Default | Example |
|---|---|---|---|
message |
Message to send (required) | - | "Hello" |
--session, -s |
Session ID to continue | - | a1b2c3d4... |
--agent, -a |
Agent name to use | main |
researcher |
--debug |
Enable debug output | false |
- |
Sessions Options
| Argument | Description | Default | Example |
|---|---|---|---|
--limit |
Max sessions to show | 10 |
20 |
Configuration
Default config file: ~/.outoac/config.json
Override with --config flag or OUTOAC_CONFIG environment variable:
# Use custom config
outoac --config ./project-config.json chat "Hello"
# Or via environment variable
export OUTOAC_CONFIG=./project-config.json
outoac chat "Hello"
{
"providers": {
"default": {
"kind": "openai",
"base_url": "http://localhost:11434/v1",
"api_key": "your-key",
"default_model": "llama4:scout",
"max_output_tokens": 0
}
},
"agents": {
"main": "~/.outoac/agents/main.md",
"researcher": "~/.outoac/agents/researcher.md",
"writer": "~/.outoac/agents/writer.md",
"reviewer": "~/.outoac/agents/reviewer.md",
"coder": "~/.outoac/agents/coder.md",
"tester": "~/.outoac/agents/tester.md"
},
"default_agent": "main",
"skills_dir": "~/.outoac/skills/",
"wiki": {
"enabled": false,
"wiki_path": "~/.outoac/wiki/",
"provider": "openai",
"model": "gpt-5.5",
"api_key": "",
"base_url": "",
"max_output_tokens": 0,
"debug": false
}
}
Provider Settings
| Parameter | Description | Default |
|---|---|---|
kind |
Provider type (openai, anthropic) | openai |
base_url |
API endpoint URL | - |
api_key |
API key for authentication | - |
default_model |
Default model for agents | - |
max_output_tokens |
Default max output tokens (auto-detected if 0) | 0 |
Note: If max_output_tokens is 0 or not set, the system automatically retrieves the optimal value from the LCW API. Agent-level settings override provider defaults.
Wiki Settings
| Parameter | Description | Default |
|---|---|---|
enabled |
Enable wiki knowledge base tools | false |
wiki_path |
Path to wiki directory | ~/.outoac/wiki/ |
provider |
LLM provider for wiki operations | openai |
model |
Model for wiki analysis | (empty, uses provider default) |
api_key |
API key for wiki provider | (empty, uses provider key) |
base_url |
Base URL for wiki provider | (empty, uses provider URL) |
max_output_tokens |
Max tokens for wiki responses (auto-detected if not set) | 0 (auto) |
debug |
Enable wiki debug logging | false |
Note: If max_output_tokens is 0 or not set, the system automatically retrieves the optimal value from the LCW API.
Agent Markdown Format
Agent definitions use markdown with optional YAML frontmatter:
---
model: MiniMax-M2.7
provider: default
temperature: 1
max_output_tokens: 4000
---
# Research Agent
You are a research specialist. Your job is to find information
and provide detailed analysis.
Frontmatter fields:
model: Model name (overrides provider default)provider: Provider name to usetemperature: Sampling temperature (0.0-2.0)max_output_tokens: Maximum output tokens (auto-detected if not set)
Body:
- First
#heading becomes the agent's role - Rest becomes the agent's instructions
Note: If max_output_tokens is not set, the system automatically retrieves the optimal value from the LCW API.
Agent Example
Create multiple agents:
~/.outoac/agents/main.md:
# Coordinator
You coordinate work. Call other agents when needed.
~/.outoac/agents/researcher.md:
# Researcher
You find and organize information from the web.
~/.outoac/agents/writer.md:
# Writer
You create well-structured reports from research.
Setup with all agents:
outoac setup \
--base-url http://localhost:11434/v1 \
--api-key your-key \
--default-model llama4:scout \
--agent-md ~/.outoac/agents/main.md \
--default-agent main
Now main agent can call researcher and writer using call_agent tool.
Supported Providers
| Provider | Base URL | Default Model |
|---|---|---|
| OpenAI | https://api.openai.com/v1 |
gpt-5.5 |
| Anthropic | https://api.anthropic.com/v1 |
claude-sonnet-4-6 |
| Google Gemini | https://generativelanguage.googleapis.com/v1beta |
gemini-3-1-pro |
| Ollama | http://localhost:11434/v1 |
llama4:scout |
| LM Studio | http://localhost:1234/v1 |
(local model) |
| vLLM | http://localhost:8000/v1 |
(local model) |
Wiki Integration
Outo-agentcore integrates with OutoWiki for persistent knowledge management. When enabled, agents can record and search information across conversations.
Enable Wiki
Add to ~/.outoac/config.json:
{
"wiki": {
"enabled": true,
"provider": "openai",
"model": "gpt-5.5",
"api_key": "sk-..."
}
}
Note: If the wiki section is not present in the config, wiki features are disabled by default.
Wiki Tools
When enabled, agents have access to:
wiki_record: Save information to the wiki for future referencewiki_search: Search the wiki for relevant knowledge
Use Cases
- Remember user preferences across sessions
- Build a knowledge base from conversations
- Search for previously discussed topics
- Maintain context for long-running projects
Skills
Skills are reusable instruction packages that extend agent capabilities. They follow the Agent Skills specification.
Creating Skills
mkdir -p ~/.outoac/skills/my-skill
Create ~/.outoac/skills/my-skill/SKILL.md:
---
name: my-skill
description: What this skill does and when to use it.
---
# Instructions
Your detailed instructions go here...
How Skills Work
- Skills are automatically discovered from
~/.outoac/skills/ - Agents see all available skills in their system prompt
- Agents automatically activate skills based on task description
- Skills are loaded progressively (metadata → instructions → resources)
See Skills Documentation for details.
Built-in Tools
| Tool | Description |
|---|---|
bash |
Execute shell commands |
call_agent |
Call another agent |
finish |
Return final result |
wiki_record |
Record information to wiki (when enabled) |
wiki_search |
Search wiki knowledge base (when enabled) |
Directory Structure
~/.outoac/
├── config.json # Provider and agent settings
├── agents/ # Agent markdown definitions
│ ├── main.md
│ ├── researcher.md
│ ├── writer.md
│ ├── reviewer.md
│ ├── coder.md
│ └── tester.md
├── skills/ # Skill definitions (Agent Skills spec)
│ ├── code-review/
│ │ └── SKILL.md
│ └── git-workflow/
│ └── SKILL.md
├── sessions/ # Session persistence
│ └── <session-id>.json
└── wiki/ # Wiki knowledge base (when enabled)
└── *.md # Wiki documents
Development
# Clone
git clone <repo-url>
cd outo-agentcore
# Install dependencies
uv sync
# Run tests
uv run pytest tests/ -v
# Run CLI
uv run python -m outoac --help
License
Apache-2.0
Project details
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_agentcore-0.4.0.tar.gz.
File metadata
- Download URL: outo_agentcore-0.4.0.tar.gz
- Upload date:
- Size: 167.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
443bac9571961ced5e43b2ab03bac633d2cde16b98cb374931c6deaa0a6807f6
|
|
| MD5 |
5732b1ac180c67ee2b144ab0ea495f8e
|
|
| BLAKE2b-256 |
b95126a1228179a1f3a0cf042136637eb707629f97c37a8e4c752033e75ff9dc
|
Provenance
The following attestation bundles were made for outo_agentcore-0.4.0.tar.gz:
Publisher:
publish.yml on llaa33219/outo-agentcore
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
outo_agentcore-0.4.0.tar.gz -
Subject digest:
443bac9571961ced5e43b2ab03bac633d2cde16b98cb374931c6deaa0a6807f6 - Sigstore transparency entry: 1492820946
- Sigstore integration time:
-
Permalink:
llaa33219/outo-agentcore@4f9aaf717fb88b599e344a41e0e277e8f7fd2eff -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/llaa33219
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4f9aaf717fb88b599e344a41e0e277e8f7fd2eff -
Trigger Event:
push
-
Statement type:
File details
Details for the file outo_agentcore-0.4.0-py3-none-any.whl.
File metadata
- Download URL: outo_agentcore-0.4.0-py3-none-any.whl
- Upload date:
- Size: 15.3 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 |
4f9411cd33014b4531af0397ecd3f0c4487924e474ab89c717dd9fbc616fe6b9
|
|
| MD5 |
7650b67772ec41917b79f579f65615b6
|
|
| BLAKE2b-256 |
dab01b50d19259997a509083e7f63b81e5c4ff0a51e71c825992a9c1f62557de
|
Provenance
The following attestation bundles were made for outo_agentcore-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on llaa33219/outo-agentcore
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
outo_agentcore-0.4.0-py3-none-any.whl -
Subject digest:
4f9411cd33014b4531af0397ecd3f0c4487924e474ab89c717dd9fbc616fe6b9 - Sigstore transparency entry: 1492821022
- Sigstore integration time:
-
Permalink:
llaa33219/outo-agentcore@4f9aaf717fb88b599e344a41e0e277e8f7fd2eff -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/llaa33219
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4f9aaf717fb88b599e344a41e0e277e8f7fd2eff -
Trigger Event:
push
-
Statement type: