Skip to main content

Part of the Kontiki suite — a compact open-source stack for startups and small teams that need ops without the heavy stack.

Full suite overview → https://kontiki-org.github.io/

Ops demo → kontiki-monitor Quickstart.


Overview

Kontiki is a Python microservices framework built on AMQP (aio-pika) and asyncio.

  • Write only your business logic: Kontiki manages connections to RabbitMQ, message routing (RPC, events, sessions, broadcast), service lifecycle and configuration merge for you.
  • Design service interactions as messages: combine RPC, events, broadcast and per‑instance sessions to describe how services collaborate.
  • Configuration‑driven: merged YAML config and a unified runner (cli.run) to start services the same way in development and production.
  • Optional service registry: heartbeats, degraded state (degraded_on), and basic observability (service status, events, exceptions).
  • Testability-first API: integration helpers (kontiki.testing) are designed to make end-to-end scenarios easy to express with Behave (mock services, captured events/RPC/HTTP, synchronous test runner).

For a detailed overview of all features, see docs/features.md. For patterns that are easy to miss (registry health, flow_id, delivery modes, testing, …), see docs/advanced-features.md.


Quickstart

Install Kontiki (via pip or Poetry):

pip install kontiki

Define a simple service:

from kontiki.delegate import ServiceDelegate
from kontiki.messaging import Messenger, on_event, rpc


class MyDelegate(ServiceDelegate):
    async def setup(self):
        # init from self.container.config
        pass

    async def start(self):
        # optional: start background tasks / open connections
        pass

    async def stop(self):
        # optional: stop background tasks / close connections
        pass

    def do_something(self, x):
        # business logic
        return x * 2

    async def handle_thing(self, payload):
        # business logic
        return {"processed": payload}


class MyService:
    name = "compute-api"  # optional: if omitted, the class name "MyService" is used
    delegate = MyDelegate()
    messenger = Messenger()  # delegate: publish events, RPC to other services

    @rpc
    async def compute(self, x):
        return self.delegate.do_something(x)

    @on_event("thing_happened")
    async def on_thing(self, payload):
        result = await self.delegate.handle_thing(payload)
        await self.messenger.publish("thing_processed", result)

def run():
    cli.run(MyService, "Example Kontiki service.", version="0.1.0")

Expose it as a CLI command in pyproject.toml:

[tool.poetry.scripts]
my_service = "myapp.main:run"

Run your service:

my_service --config config.yaml

Kontiki relies on RabbitMQ. For local development and to run the examples, you can start a RabbitMQ instance via Docker with:

make run-amqp

Documentation

  • Features: docs/features.md
  • Advanced features (patterns & gotchas): docs/advanced-features.md
  • Configuration reference: docs/configuration.md
  • Example configuration: docs/kontiki-config.example.yaml
  • Contributing guidelines: CONTRIBUTING.md
  • License: LICENSE

Examples

Examples can be run via the Makefile (see targets such as run-rpc-service, run-rpc-example, run-simple-events-service, etc.).

Feature Example path
Basic RPC examples/rpc/
Simple events examples/events/simple/
Broadcast events examples/events/broadcast/
Event serialization examples/events/serialization/
Session-based events examples/events/session/
Periodic tasks examples/task/
Service registry (admin + client) examples/registry/
Heartbeats & degraded mode examples/heartbeat/
HTTP entrypoints examples/http/simple/

Suite services

Service Role
kontiki-scheduler Declarative cron on the bus — static YAML schedules publish {name}.schedule_task.requested (replaces external crontab).
kontiki-tui Terminal UI over the registry and local logs.
kontiki-monitor Fleet checks, registry signals, and host disk alerts.

Monitoring (KontikiTUI)

When services register with the Kontiki registry, you can use KontikiTUI: a small terminal UI to browse registered services, inspect registry events and exceptions, and tail log files from the terminal.

KontikiTUI — services overview

Misc

Kontiki did not come out of a naming workshop but from the album Kontiki by the band Cotton Mather.
If you enjoy vintage 4-track indie pop as much as microservices, you should check it out.

Download files

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

Source Distribution

kontiki-1.6.1.tar.gz (39.1 kB view details)

Uploaded Source

Built Distribution

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

kontiki-1.6.1-py3-none-any.whl (57.4 kB view details)

Uploaded Python 3

File details

Details for the file kontiki-1.6.1.tar.gz.

File metadata

  • Download URL: kontiki-1.6.1.tar.gz
  • Upload date:
  • Size: 39.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.13.7 Linux/6.8.0-137-generic

File hashes

Hashes for kontiki-1.6.1.tar.gz
Algorithm Hash digest
SHA256 f4d0b0a3c8e9f7706db15772db2f5d092b5d044c2cc24e2df86292c76a686c68
MD5 1080e3cf526d1b8e54e64544e575fcb5
BLAKE2b-256 cedfefc565080bc6c24c15f6760e81503be4ad9568ec8650af8e3b7201594e7d

See more details on using hashes here.

File details

Details for the file kontiki-1.6.1-py3-none-any.whl.

File metadata

  • Download URL: kontiki-1.6.1-py3-none-any.whl
  • Upload date:
  • Size: 57.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.13.7 Linux/6.8.0-137-generic

File hashes

Hashes for kontiki-1.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 505c10dfaa94f0e16448a3a8e13fa5ed32c3396172d9551ba7a17e0db9af6991
MD5 ea6cb03390aee4a33875f7a1abaaf90b
BLAKE2b-256 d78d045554b584089b4abe848460199d0029ecc49590f1cc1941ecb8d971b350

See more details on using hashes here.

Release history Release notifications | RSS feed

1.9.0

2 files

1.8.1

2 files

1.8.0

2 files

1.7.1

2 files

1.7.0

2 files

1.6.2

2 files

This release

1.6.1 This release

2 files

1.6.0

2 files

1.5.0

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.2

2 files

1.0.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