Skip to main content

Loro

Loro is a Python CLI agent harness for enterprise coding, governed data work, and productivity tasks.

"Loro" is Spanish for parrot: an intelligent, social bird that listens, learns, repeats useful knowledge, and helps information move across groups.

Install

python -m pip install loro-agent
loro --version

Optional extras:

python -m pip install "loro-agent[data]" # Postgres, Iceberg, and PyArrow support
python -m pip install "loro-agent[aws]"  # AWS Bedrock adapter support
python -m pip install "loro-agent[mcp]"  # MCP client support
python -m pip install "loro-agent[gateway]" # Discord and signed chat gateway support
python -m pip install "loro-agent[dev]"  # Development and test tools

60-Second Quick Start

Loro ships with a provider setup wizard. Run it with no flags for an interactive setup:

loro configure
loro doctor
loro plan "Create a release readiness checklist for this project."

Create a portable, governed AGS 1.0 plan when work needs explicit scheduling and approval:

loro graph generate "Create a release readiness report" --out release.agraph.yaml
loro graph validate release.agraph.yaml --strict
loro graph plan release.agraph.yaml
loro graph run release.agraph.yaml --dry-run

Loro supports AGS conformance level 3 with durable resume, model-tier routing, harness-evaluated criteria, gates, branches, bounded loops/maps, subgraphs, parallel ready nodes, fallbacks, and compensation. See the Agentic Graph guide.

Loro supports authenticated remote work through Slack, Discord, Telegram, Teams, Signal bridges, and generic signed webhooks. Platform users map to tenant-scoped Loro identities, while remote message text never carries approval authority. See Channel Gateways.

Provider and gateway secrets can live in the operating-system credential vault, including multiple named accounts for the same provider. Environment variables remain an override for automation. See the Credential Vault.

For a no-key first run, choose the mock provider in the wizard. That lets you verify the CLI, configuration loading, memory paths, artifact folders, and health checks before connecting a paid model provider.

When you are ready to use a cloud model, set the provider API key in your shell and rerun the wizard:

export OPENAI_API_KEY="<your-key>"
loro configure
loro providers check openai
loro run "Inspect README.md and suggest the next three improvements."

The wizard stores local settings in .loro/config.local.toml. API keys can remain in environment variables or be addressed through OS-vault credential references; Loro does not write plaintext keys into the config file.

Additional setup wizards are available for the enterprise pieces:

loro setup identity
loro setup approvals
loro setup sandbox
loro setup audit
loro setup memory
loro setup shared-memory
loro setup polaris
loro setup mcp
loro setup mcp-server
loro setup gateway
loro setup skills
loro setup quickstart

What It Includes

  • A Typer-powered CLI entrypoint.
  • Configuration loading from system, user, project, local, runtime, and managed enterprise sources.
  • Identity context from config/environment with managed required fields and audit/session propagation.
  • Identity-bound approval records with interactive once/session/deny prompts and replay protection.
  • Permission decision primitives.
  • Normalized filesystem, shell, Git, memory, Polaris, provider, MCP, and session-message policy resources.
  • Named subprocess profiles with minimized environments, bounded runtime/output, and optional Bubblewrap enforcement.
  • Local and shared memory interfaces.
  • Postgres and Iceberg shared memory adapters with explicit-only shared write flows.
  • PyIceberg execution support for governed Iceberg shared-memory search and draft commits.
  • Polaris client for read-only governed catalog discovery.
  • Artifact generation for Markdown/DOCX documents, PPTX presentations, XLSX/CSV spreadsheets, and Markdown briefs.
  • Artifact provenance sidecars that record prompt previews, generated paths, assumptions, and generator metadata.
  • Versioned JSONL/HTTP audit delivery with bounded buffering, retry, diagnostics, and flush.
  • Durable session records and non-authoritative cross-session message delivery.
  • Permission-gated file and shell tools.
  • Shared memory draft staging and Postgres/Iceberg schema output.
  • Shared memory backend diagnostics.
  • Safety scanner for obvious secrets before memory and artifact writes.
  • AI provider profiles and loro configure setup wizard.
  • Native tool-call normalization for OpenAI-compatible, Anthropic, Gemini, and Bedrock providers.
  • Dual-era MCP client support for tools, resources, and prompts through stdio or Streamable HTTP.
  • Deny-by-default MCP extensions, durable experimental Tasks, and bounded modern subscriptions.
  • Least-privilege MCP server mode with an explicit read-only export ceiling.
  • Read-only Agentic Graph validation and planning over explicitly exported MCP tools.
  • Digest-tracked Agent Skills with progressive loading, lifecycle controls, and reviewed installs.
  • OS-keyring credential vault references with named provider and integration accounts.
  • Signed, identity-mapped Slack, Discord, Telegram, Teams, Signal-bridge, and generic gateways.

Configure A Provider

Use the setup wizard:

loro configure

Or pass options directly for repeatable onboarding scripts:

loro providers list
loro providers show openai
export OPENAI_API_KEY="<your-key>"
loro configure --provider openai --model gpt-5.6-luna --small-model gpt-5.4-mini
loro providers check openai

For local Ollama:

loro configure --provider ollama --model llama3.2 --small-model llama3.2

loro configure writes .loro/config.local.toml by default. Keep provider secrets in environment variables.

Additional setup wizards are available through loro setup:

loro setup provider
loro setup identity
loro setup approvals
loro setup audit
loro setup memory
loro setup shared-memory
loro setup polaris
loro setup quickstart
loro policy explain '{"tool":"shell","action":"run command","resource":{"kind":"shell","executable_name":"python"}}'
loro audit doctor
loro audit flush
loro audit verify

loro setup shared-memory supports Postgres and Iceberg. Shared memory writes remain explicit-only and draft-gated.

Run Agentic Tasks

loro plan "Create a release readiness checklist"
loro run "Inspect README.md and suggest the next three improvements."

Loro can use typed tools for file reads/searches, approved edits, approved shell commands, Git helpers, memory search, Polaris discovery, and artifact creation. Write-like tools are permission-gated.

Development

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
loro --help
python -m pytest

Examples

loro remember --local "Status briefs should include risks, blockers, next steps, and owner."
loro remember --shared "Use the enterprise launch readiness template for launches."
loro memory drafts
loro memory commit-draft <draft-id>
loro memory shared-search "launch readiness" --tenant-id acme
loro memory lifecycle <memory-id> --action hold --reason "Approved hold" --execute
loro memory propose "Use concise launch summaries" --target local
loro memory propose "Use the enterprise launch readiness template" --target shared
loro memory accept-proposal <proposal-id>
loro memory schema --backend postgres
loro memory backend-check
loro docs create "Draft a project kickoff document"
loro slides create "Quarterly platform update"
loro sheets create "Launch readiness tracker"
loro brief meeting "Prepare for roadmap sync"
loro memory search "status briefs"
loro sessions list
loro file search "Polaris" --root .
loro file read PRD.md --limit 1000
loro shell run --yes -- python -c "print('hello from Loro')"
loro safety scan "api_key = 'abc123456789'"
loro safety doctor
loro providers list
loro providers show nous-portal
loro providers check nous
loro providers request "hello" --provider nous --model deepseek/deepseek-v4-flash
loro providers smoke "hello" --provider gemini --model gemini-3.6-flash --execute
loro providers smoke "hello" --provider anthropic --model claude-sonnet-5 --execute
loro providers smoke "hello" --provider opencode-zen --model deepseek-v4-flash --execute
loro providers request "hello" --provider trustedrouter --model trustedrouter/cheap
loro providers request "hello" --provider prime --model openai/gpt-oss-20b
loro configure --provider ollama --model llama3.2 --small-model llama3.2
loro data schema events --catalog prod --namespace analytics
loro data explain-access events --catalog prod --namespace analytics --catalog-role reader

Generated files are written to artifacts/ by default. Use --output-dir to choose another location. Each generated artifact also gets a .provenance.json sidecar.

Configuration can be layered from .loro/config.toml, LORO_CONFIG, and LORO_CONFIG_CONTENT. Enterprise-managed overlays can be supplied through /etc/loro/managed.toml, LORO_MANAGED_CONFIG, or LORO_MANAGED_CONFIG_CONTENT; those managed values are applied last.

Managed policy can be required and pinned with LORO_MANAGED_CONFIG_REQUIRED and LORO_MANAGED_CONFIG_SHA256. Runtime task budgets cover model bytes/tokens/cost and tool calls; provider transport supports bounded retries plus environment-backed enterprise CA/proxy paths. See External Enterprise Requirements for deployment, identity, database, catalog, audit, and governance evidence that must be supplied outside Loro.

For shell commands, use -- before the command when passing flags to the child process.

Managed data protection classifies and scans model, memory, artifact, session, tool-output, and audit flows. Use --allow-sensitive only for development policy that explicitly permits the override; enterprise overlays can disable it.

MCP Quick Start

Install the optional SDK, run the wizard, and verify the configured server:

python -m pip install "loro-agent[mcp]"
loro setup mcp
loro mcp list
loro mcp doctor SERVER_ID
loro mcp test SERVER_ID

The wizard can attach experimental modern MCP Tasks. Task handles are durable across Loro processes, while input and cooperative cancellation remain permission and approval gated:

loro mcp task-start SERVER_ID TOOL_NAME --arguments '{}'
loro mcp tasks --server-id SERVER_ID
loro mcp task-get SERVER_ID TASK_ID

Unknown MCP extensions remain inert. Modern subscriptions are bounded by configured event, duration, and output limits. See the MCP guide for authentication, managed policy, task input/cancellation, and compatibility details.

Loro can also serve an explicit read-only capability subset and load digest-tracked Agent Skills:

loro setup mcp-server
loro mcp server-inspect
loro setup skills
loro skills list
loro skills import-claude ./plugin
loro skills import-pi ./package

Compatibility imports preview skill, MCP, and unsupported host components before any mutation; execution requires the reviewed source digest. Loro does not execute Claude hooks/agents or Pi TypeScript extensions as plugins. See Agent Skills.

Saved sessions exchange durable, non-authoritative coordination messages:

loro sessions send SENDER_SESSION RECIPIENT_SESSION "Review is ready."
loro run --resume-session RECIPIENT_SESSION "Continue."

Documentation

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

loro_agent-0.4.1.tar.gz (469.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

loro_agent-0.4.1-py3-none-any.whl (267.6 kB view details)

Uploaded Python 3

File details

Details for the file loro_agent-0.4.1.tar.gz.

File metadata

  • Download URL: loro_agent-0.4.1.tar.gz
  • Upload date:
  • Size: 469.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for loro_agent-0.4.1.tar.gz
Algorithm Hash digest
SHA256 a4af359edc33e5ac4d47c17d565c0aeaf65002e294d0fe275b00e0b9da038764
MD5 59d0ccd65a7cdaff3fa5f5504a45950f
BLAKE2b-256 cfdab486737622f1cf54a765968b0926e3773dacfe8f80dba2becd440760da58

See more details on using hashes here.

File details

Details for the file loro_agent-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: loro_agent-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 267.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for loro_agent-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9e9dc6428c54c8c72cc493537d49f708251814e0d45f46f8c00d21fdd5676ae0
MD5 f364428efdf72111bd43f923cd2d6926
BLAKE2b-256 b600f15f3daca6a4de0d80af9620e2e8ef75568f45ebe5e51ac23898377bf0c0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page