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

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.5
File Size Uploaded Provenance
amebo-0.9.5.tar.gz 1.0 MB Without provenance Details

Built distribution (wheel)

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

Total release size: 2.2 MB

Release files / amebo-0.9.5.tar.gz

Download URL amebo-0.9.5.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
a894ddf56814eaddada66ad6c17b20b323f45f565bd7854e6b5cffa6455bef3b
BLAKE2b-256 checksum
How to use checksums
c4c7751eb91c030a952221a9c8f9e591fa6f28d3b29f371922bd0c0342daba6d
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.5-py3-none-any.whl

Download URL amebo-0.9.5-py3-none-any.whl
Size 1.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
adc8a77e0a015536d1c08dbfe32c7308b5bc600165f4de1fe67bb46c3241d74f
BLAKE2b-256 checksum
How to use checksums
f44a3d69f468959f6f09a2cb850d595795fa9a2ee181149fde22d844170b080b
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.5

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