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

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.4
File Size Uploaded Provenance
amebo-0.9.4.tar.gz 513.1 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 1.1 MB

Release files / amebo-0.9.4.tar.gz

Download URL amebo-0.9.4.tar.gz
Size 513.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a19b369ad34bec3650c02fa4a9f2d41225f713eec300d8b8fd983e17d93eb89b
BLAKE2b-256 checksum
How to use checksums
9ac56cb23b48d9b5ebef564944cbfeaed31143d86b408f0eca91e8cf29cc8957
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-31-generic

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

Download URL amebo-0.9.4-py3-none-any.whl
Size 550.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b1358bb4df27875940d16e16c019b564b360dc67443f822c672cf51bf6d0f844
BLAKE2b-256 checksum
How to use checksums
4665c895196165b2449501b96194fac4d6b172af857b95c9201cb5e616ed4da4
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-31-generic

Security for amebo 0.9.4

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