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.10.tar.gz (559.4 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.10-py3-none-any.whl (109.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: evoid-0.6.10.tar.gz
  • Upload date:
  • Size: 559.4 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.10.tar.gz
Algorithm Hash digest
SHA256 567c8f68a81e736af8542fba2e62a08148b81d8be53f06c88a954427cc8f7605
MD5 41fdee3a15e4b4b834fa2d487c26c245
BLAKE2b-256 16d7f5f0c5e06f341ed7fa4a91e6a5b6a84cdac9ac43cd2bc73ec9adbffe17ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for evoid-0.6.10.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.10-py3-none-any.whl.

File metadata

  • Download URL: evoid-0.6.10-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.10-py3-none-any.whl
Algorithm Hash digest
SHA256 99188f100537ea7cc120793b2c76653940d3f2d80dad302e20eb3608ec36ae74
MD5 019848fdba2b86ea6772001d701827cd
BLAKE2b-256 9e9a0e4257159ab3ed77bdbdcf8aa423426c52c515fb18660b72622c2e984311

See more details on using hashes here.

Provenance

The following attestation bundles were made for evoid-0.6.10-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

This release

0.6.10 This release

2 files

0.6.9

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