Skip to main content

Python Version License One Core Dependency Status

EVOID

Reference Runtime for Intent-Oriented Programming

Data declares what, runtime decides how.

What is IOP?Quick StartAdaptersFeaturesDocsPyPI


What is IOP?

Intent-Oriented Programming — your data declares what it needs, the runtime handles how.

from evoid.native import create_service, on
from evoid import Intent, Level

app = create_service("my-api")

GET_USER = Intent(name="get_user", level=Level.STANDARD)

async def get_user(intent: Intent) -> dict:
    return {"id": 1, "name": "Alice"}

on(app, GET_USER, get_user)

Three intent levels control infrastructure automatically:

Level Pipeline Use Case
ephemeral validate Cache, sessions, temp data
standard validate, authorize User profiles, posts
critical validate, authorize, audit, protect Payments, medical, legal

How It Works

EVOID is a runtime, not a framework. Adapters bridge the outside world:

External Event (HTTP, CLI, Telegram, WebSocket, ...)
        |
   Adapter converts event → Intent
        |
   Runtime executes Intent through Pipeline
        |
   Pipeline runs Processors (validate, authorize, audit, ...)
        |
   Result returned to Adapter → converted back to response

Adapters provide route decorators and event conversion. Services are Intent + handler registrations. Pipelines are processor chains chosen by intent level.

See How It Works for the full picture.


Quick Start

uv add evoid
evo init my-api && cd my-api
evo service run gateway    # already scaffolded, http://0.0.0.0:8000

evo service new api        # add another service (optional)
evo service run api        # http://0.0.0.0:8001

Or install optional engines:

evo install sqlite      # SQLite storage
evo install redis       # Redis cache
evo install pydantic    # Pydantic schema
evo install full        # Everything

Three Syntax Styles

All IOP underneath. Pick your style:

@route (function-based)

Route decorators come from the adapter. Switch adapters, same code:

from evoid.adapters.asgi import get, post
from evoid.web.route import Service

app = Service("my-api")

@get("/users/{user_id}")
async def get_user(user_id: int) -> dict:
    return {"id": user_id, "name": "Alice"}

@controller (class-based)

@GET, @POST mark routes. @Controller creates Intents from them:

from evoid.web.controller import Service, Controller, GET, POST

app = Service("my-api")

@Controller("/users")
class UserController:
    @GET("/{user_id}")
    async def get_user(self, user_id: int) -> dict:
        return {"id": user_id}

Native (full control)

Explicit Intent creation. Adapter-agnostic — works with any transport:

from evoid.native import create_service, on
from evoid import Intent, Level

app = create_service("my-api")

GET_USER = Intent(name="get_user", level=Level.STANDARD)

async def get_user(intent: Intent) -> dict:
    return {"id": 1, "name": "Alice"}

on(app, GET_USER, get_user)

Adapters

Each adapter converts its event type to Intents. Route decorators live in adapters because param extraction is adapter-specific:

Adapter Decorators Install
ASGI (HTTP) @get(path), @post(path) evoid[asgi]
Robyn @get(app, path), @post(app, path) evoid[robyn]
Telegram on(bot, event, handler) evoid[telegram]
CLI intent_from_args(cmd) built-in
MCP (AI agents) create_mcp_server(name) built-in

See Adapters for details and examples.


Features

Minimal Core Core has one required package (tomli_w)

AI Agent Integration Schema export + MCP server

Plugin System PyPI + git install

Python-Native Config Type-safe, composable

Pipeline Hooks 6 lifecycle events

Testing System pytest + WebUI dashboard

Async-Native Full async/await support

Parallel Execution gather, parallel, IntentQueue

Multi-Adapter ASGI, CLI, Telegram, WebSocket, MCP

Storage Engines Memory, SQLite, Redis, Postgres

Cache Engine LRU with TTL, Redis backend

Extend Pipelines before/after processors, pipeline override


AI Agent Integration

from evoid import export_schemas
from evoid.adapters.mcp import create_mcp_server

schemas = export_schemas()
server = create_mcp_server("my-api")

Plugin System

evo plug install evoid-redis           # From PyPI
evo plug install git+https://...       # From git
evo plug search cache                  # Search PyPI
evo plug list                          # List installed

Configuration

Python (Recommended)

from evoid.config import config

app = config(
    service={"name": "my-api"},
    runtime={"adapter": "asgi", "port": 8000},
    engines={"storage": "redis"},
)

TOML

[service]
name = "my-api"

[engines]
storage = "redis"

Testing

from evoid.testing import tc
from myapp import GET_USER

def test_get_user():
    return tc(GET_USER, expect={"id": 1})
pytest tests/ -v                    # Run tests
pytest tests/ --evoid-webui         # With dashboard
pytest tests/ --evoid-inspect       # With pipeline traces

Project Structure

my-api/
  evoid.toml              # TOML config (or evoid_config.py)
  shared/                 # Shared code
  services/
    api/
      main.py             # Service code

Package Layout

evoid/
  core/          Intent, Pipeline, Context, Runtime, Events, MessageBus
  native/        IOP mother syntax (create_service, on)
  web/           @route and @controller syntax
  adapters/      asgi, cli, telegram, websocket, mcp, robyn
  engines/       storage, cache, auth, di, logger, metrics, schema, serializer
  processors/    Built-in processors (validate, authorize, etc.)
  config/        TOML + Python config loading
  testing/       pytest plugin + WebUI dashboard
  project/       Project scaffolding

Documentation

Full docs: https://evolvebeyond.github.io/EVOID/

Architecture: https://deepwiki.com/EvolveBeyond/EVOID (architecture documentation that updates faster, great for contributors) Ask DeepWiki


Contributing

See CONTRIBUTING.md.

  1. Fork → Branch → Commit → PR
  2. Tests: pytest tests/ -v
  3. Lint: ruff check evoid/

License

Apache 2.0


EVOID
Built with IOP principles. Intent is the platform.

Download files

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

Source Distribution

evoid-0.6.9.tar.gz (558.6 kB view details)

Uploaded Source

Built Distribution

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

evoid-0.6.9-py3-none-any.whl (109.8 kB view details)

Uploaded Python 3

File details

Details for the file evoid-0.6.9.tar.gz.

File metadata

  • Download URL: evoid-0.6.9.tar.gz
  • Upload date:
  • Size: 558.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for evoid-0.6.9.tar.gz
Algorithm Hash digest
SHA256 34bcb3632d50e62238d88487e0056fc2c66a925e8ffca72daef35b06f6cc0b5f
MD5 af8a7fca1582d1bc7d8ce58b01d364b8
BLAKE2b-256 1b85a7dd91f0411a349dc01e6e580102747b0c50d00a0436f4e85589b4dc73c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for evoid-0.6.9.tar.gz:

Publisher: publish-pypi.yml on EvolveBeyond/EVOID

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file evoid-0.6.9-py3-none-any.whl.

File metadata

  • Download URL: evoid-0.6.9-py3-none-any.whl
  • Upload date:
  • Size: 109.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for evoid-0.6.9-py3-none-any.whl
Algorithm Hash digest
SHA256 00cede7d183cff8a9bb31f71412d88b359af5f86d9aa310e8a20da97cdd0fc15
MD5 c777184f346b8cd81bdeca424c3b5f2a
BLAKE2b-256 fa28180d08738606c3c433c0a4c8754a73ca71aa44b494628b546cca0b0b4bd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for evoid-0.6.9-py3-none-any.whl:

Publisher: publish-pypi.yml on EvolveBeyond/EVOID

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.6.10

2 files

This release

0.6.9 This release

2 files

0.6.8

2 files

0.5.0

2 files

0.4.3

2 files

0.4.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page