Skip to main content

Python Version License Zero Dependencies 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 new api && evo service run api
# http://0.0.0.0:8000

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

Zero Dependencies Core has no required packages

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


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.4.3.tar.gz (507.2 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.4.3-py3-none-any.whl (97.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for evoid-0.4.3.tar.gz
Algorithm Hash digest
SHA256 69e48be70307a27081758a18c9a65918b7aca4d6e8787946a90109dd209878aa
MD5 2af9e1b60d449b96a37f5c94c13f5e24
BLAKE2b-256 9857e604c6e8e9d876a5d217c1b50206a5a2c5653031f456bfe38c433a0d2d35

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for evoid-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 eb1b96985b74e0be20732a759eebafb8fcbe9fb912b2e9bcb03013493f968d57
MD5 14fbafa71255969ea2dc523f3a4446c6
BLAKE2b-256 fc33a683cee9abcc6dc2faae27c747ec0c94e11332290b1a1c6215279173eed9

See more details on using hashes here.

Provenance

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

0.6.9

2 files

0.6.8

2 files

0.5.0

2 files

This release

0.4.3 This release

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