perceivo
Python SDK for building AI orchestration components: create, validate and run orchestrations locally, then publish them to Perceivo Cloud.
Installation
pip install perceivo
Optional extras add service clients, for example Redis:
pip install "perceivo[redis]"
The extras are redis, milvus, elasticsearch, database and fastapi.
Python 3.11, 3.12 and 3.13 are supported.
Quick start
These commands create a project with a starter orchestration, validate it and run it locally. They need no account.
perceivo init
perceivo new orchestration my-first-orch
perceivo validate component ./my-first-orch/agent.py ./my-first-orch/agent.yaml
perceivo validate orchestration ./my-first-orch/
perceivo run orchestration ./my-first-orch/ --input '{"query": "test"}'
# expect: RESULT: PASS
Write your own component
Replace my-first-orch/agent.py with:
import perceivo
@perceivo.agent
async def my_agent(input: perceivo.primitives.AgentInput) -> perceivo.primitives.AgentOutput:
api_key = await perceivo.secrets.get("ANTHROPIC_API_KEY")
perceivo.log.info("Processing request")
# Your logic here
answer = "Hello from perceivo!"
return perceivo.primitives.AgentOutput(
artifact=perceivo.primitives.Artifact(
type=perceivo.primitives.ArtifactType.JSON,
data={"answer": answer},
),
response_data={"answer": answer, "result": answer},
)
Then run the two validate commands and the run command again.
Component Types
| Type | Decorator | Purpose |
|---|---|---|
| Start | @perceivo.start |
Entry point — receives initial input |
| Agent | @perceivo.agent |
Main processor — calls LLMs, makes decisions |
| Tool | @perceivo.tool |
Utility — API calls, data transforms |
| End | @perceivo.end |
Exit point — formats final output |
| FSM | @perceivo.fsm |
State machine — manages state transitions |
| Policy | @perceivo.policy |
Decision maker — controls FSM transitions |
| Adapter | @perceivo.adapter |
Schema transformer — maps between formats |
| Review | @perceivo.review |
Human review — the run waits for a person's decision |
SDK Modules
The first group is what a component body normally reaches for; the second is the authoring and local-run side, used by the CLI and by scripts around a project.
| Module | Purpose |
|---|---|
perceivo.primitives |
Component base classes and their input and output types |
perceivo.types |
Shared types: errors, Page, enums and records |
perceivo.params |
Input parameters declared in the component manifest |
perceivo.secrets |
Secret values declared in the manifest's required_secrets |
perceivo.files |
Organization file storage; .working and .platform are the other two scopes |
perceivo.log |
Structured logging, and log queries by LogType with query |
perceivo.flow |
Port invocation (call connected components) |
perceivo.stream |
Conversation streaming — tokens, messages, history |
perceivo.alerts |
Custom alerts by key; the platform resolves the audience to subscribed org members |
perceivo.cost |
Cost recording and model pricing |
perceivo.cluster |
Redis, Milvus, Elasticsearch, and MCP handles (await ….connect()) |
perceivo.managed_service |
Managed AI models and managed databases |
perceivo.intelligence |
Predictions and the feature store of a trained intelligence |
perceivo.capabilities |
Capabilities in the organization and their execution graphs |
perceivo.capability |
Scoring and evaluator components for a capability's runs |
perceivo.reviews |
Completed human-review results |
perceivo.component |
Create, validate, import/export, and list components |
perceivo.orchestration |
Create, load, validate, run, and publish orchestrations |
perceivo.validator |
Validation checks and reports |
perceivo.templates |
The component and orchestration template catalog |
perceivo.runner |
Local execution and run history |
perceivo.bootstrap |
Session lifecycle for a run |
perceivo.local |
Local mode, per-service mock modes, and the call trace |
perceivo.config |
perceivo.yaml loading |
For HTTP requests to external APIs (LLMs, etc.), use httpx or the provider's
Python SDK directly. Retrieve API keys with perceivo.secrets.get().
Configuration
Create a perceivo.yaml in your project:
version: 1
files:
working_dir: ./working_files
org_dir: ./org_files
secrets:
source: dotenv
dotenv_path: .env
redis:
enabled: false
url: redis://localhost:6379
logging:
level: INFO
format: console
Secrets are read from .env in local mode. In Perceivo Cloud, they are
resolved from the configured managed secret service.
Local vs Cloud
Local runs exercise the same component interface through local adapters and configured mocks. Cloud runs use managed services and distributed execution, so credentials, service availability, networking, and performance differ even when the component code stays the same. See the documentation for adapter and mocking guidance.
| Feature | Local | Cloud |
|---|---|---|
| Secrets | .env file |
Azure Key Vault |
| Files | Local filesystem | Azure Blob Storage |
| Logging | Console | Loki |
| HTTP | Direct requests | Egress broker |
| Redis | Local/in-memory | Azure Redis |
| Execution | Single process | Managed distributed runtime |
Documentation
The complete documentation is at perceivo.ai/docs. The examples directory holds three complete orchestrations, each exactly as it downloads from the website: an import file, one folder per component and a notebook that runs it on your machine.
Support and security
- Questions and bugs: open an issue, or email support@perceivo.ai.
- Security vulnerabilities: do not open a public issue; follow SECURITY.md.
- Contributing: see CONTRIBUTING.md and the Code of Conduct.
License
Apache 2.0 — see LICENSE.
Metadata
Release files for perceivo 1.0.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 | |
|---|---|---|---|
| perceivo-1.0.0.tar.gz | 529.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| perceivo-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.2 MB
Release files / perceivo-1.0.0.tar.gz
| Download URL | perceivo-1.0.0.tar.gz |
|---|---|
| Size | 529.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5d2ba904c169569dc1cf867eaa106db1b180c687cb5c2ad4d81898a442246d16
|
|
BLAKE2b-256 checksum How to use checksums |
4ccb702dc1e79719970aa8c69164a3c259544c6eb355ff71cf884b0eba4a516f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / perceivo-1.0.0-py3-none-any.whl
| Download URL | perceivo-1.0.0-py3-none-any.whl |
|---|---|
| Size | 683.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
59e044462ea713999d93f13536093e49f4ec331e04a76bb9d05cbfdbaf03d643
|
|
BLAKE2b-256 checksum How to use checksums |
ae0289d2f590a5bb7c6db32586d339bd42bf79071a52dc47a606d30ed30dd689
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency log