Skip to main content

Amebo

PyPI version Docker Pulls License: MIT Documentation

HTTP Event Notifications Server - A lightweight, schema-driven event broadcasting system for microservices and distributed applications.

Amebo simplifies event-driven architecture by providing a centralized hub for publishing, validating, and distributing events across your applications with built-in schema registry and webhook delivery.

✨ Key Features

  • 🚀 High Performance: Sub-10ms response times with 1000+ events/second throughput
  • 📋 Schema Registry: Built-in JSON Schema validation for all events
  • 🔄 Reliable Delivery: Automatic retries with exponential backoff
  • 🐳 Production Ready: Docker support with clustering and monitoring
  • 🛡️ Secure: JWT authentication and webhook signature verification
  • 📊 Observable: Comprehensive metrics and health checks

🏗️ Core Concepts

Amebo has just 4 simple concepts to master:

  1. Applications - Services that publish and consume events
  2. Actions - Event types with JSON Schema validation
  3. Events - Actual occurrences of actions with payloads
  4. Subscriptions - Webhook endpoints that receive events

🚀 Quick Start

# Start Amebo with PostgreSQL
docker run -d \
  --name amebo \
  -p 3310:3310 \
  -e AMEBO_DSN="postgresql://user:pass@host:5432/amebo" \
  rayattack/amebo:latest

Python Package

pip install amebo
amebo --workers 2 --address 0.0.0.0:3310

Example Usage

# 1. Register an application
curl -X POST http://localhost:3310/v1/applications \
  -H "Content-Type: application/json" \
  -d '{
    "application": "user-service",
    "address": "https://users.myapp.com",
    "secret": "your-secret-key"
  }'

# 2. Define an action with schema
curl -X POST http://localhost:3310/v1/actions \
  -H "Content-Type: application/json" \
  -d '{
    "action": "user.created",
    "application": "user-service",
    "schemata": {
      "type": "object",
      "properties": {
        "id": {"type": "string"},
        "email": {"type": "string", "format": "email"}
      },
      "required": ["id", "email"]
    }
  }'

# 3. Publish an event
curl -X POST http://localhost:3310/v1/events \
  -H "Content-Type: application/json" \
  -d '{
    "action": "user.created",
    "payload": {
      "id": "user-123",
      "email": "john@example.com"
    }
  }'

🐍 Python Client

Prefer not to hand-roll HMAC signing? Use the bundled amebo-client SDK — it signs requests (with optional replay protection) and verifies inbound webhooks for you:

from amebo_client import AmeboClient, verify_webhook

amebo = AmeboClient("http://localhost:3310", application="user-service", secret=SECRET)
amebo.publish("user.created", {"id": "user-123", "email": "john@example.com"}, deduper="user-123")

# in your webhook handler
if not verify_webhook(request_body, request_headers["x-amebo-signature"], SECRET):
    ...  # reject: bad signature

📚 Documentation

📖 Complete Documentation - Comprehensive guides and API reference

🏢 Use Cases

  • Microservices Communication - Decouple services with event-driven architecture
  • Event Sourcing - Build audit trails and event stores
  • Webhook Management - Centralized webhook delivery with retries
  • Data Pipeline Triggers - Trigger downstream processing on data changes
  • User Activity Tracking - Track and react to user actions across services

🔧 Production Features

  • High Availability - Multi-instance clustering with load balancing
  • Monitoring - Prometheus metrics and health checks
  • Security - JWT authentication and webhook signatures
  • Performance - Connection pooling and batch processing
  • Reliability - Automatic retries and dead letter queues

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

📊 Performance

  • Response Time: < 10ms (p95)
  • Throughput: 1000+ events/second per instance
  • Availability: 99.9% uptime with proper deployment
  • Scalability: Horizontal scaling with load balancing

🛠️ Technology Stack

  • Runtime: Python 3.8+ with FastAPI
  • Database: PostgreSQL (production), SQLite (development)
  • Deployment: Docker with clustering support
  • Monitoring: Prometheus metrics and health checks

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🌍 Etymology

The word "amebo" is West African slang (Nigerian origin) for someone who never keeps what you tell them to themselves - a chronic gossip who spreads news everywhere. Perfect for an event broadcasting system! 😄


📖 Get Started with the Documentation | 🐳 Docker Hub | 📦 PyPI

Metadata

Release files for amebo 0.9.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for amebo 0.9.6
File Size Uploaded Provenance
amebo-0.9.6.tar.gz 1.0 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for amebo 0.9.6
File Interpreter ABI Platform
amebo-0.9.6-py3-none-any.whl Python 3 none any Details

Total release size: 2.2 MB

Release files / amebo-0.9.6.tar.gz

Download URL amebo-0.9.6.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
cb26adb8ea6d58546ab7b4d89b8776cf4e776b315d9fd0fbd9b962f85284f21b
BLAKE2b-256 checksum
How to use checksums
2db48ddfa831c09bf5cea01706dbd29b10fc8983a973ec970e2a622b8128daf1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.12.3 Linux/7.0.0-34-generic

Release files / amebo-0.9.6-py3-none-any.whl

Download URL amebo-0.9.6-py3-none-any.whl
Size 1.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
20102412fedeec3f5e98ef5eb5e8864bc12ff9fe7dc1f3abfa97ca6b16df2434
BLAKE2b-256 checksum
How to use checksums
eb148184f8078f8a8e3542facdfa43a82ca8e89b5dc2acda19e846e036ea2ff6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.12.3 Linux/7.0.0-34-generic

Security for amebo 0.9.6

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.9.6 This release

2 release files No provenance

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