Skip to main content

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

Project description

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

Docker (Recommended)

# 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"
    }
  }'

📚 Documentation

📖 Complete Documentation - Comprehensive guides and API reference

Quick Links

🏢 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

Project details


Download files

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

Source Distribution

amebo-0.7.0.tar.gz (490.3 kB view details)

Uploaded Source

Built Distribution

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

amebo-0.7.0-py3-none-any.whl (523.5 kB view details)

Uploaded Python 3

File details

Details for the file amebo-0.7.0.tar.gz.

File metadata

  • Download URL: amebo-0.7.0.tar.gz
  • Upload date:
  • Size: 490.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.17.0-29-generic

File hashes

Hashes for amebo-0.7.0.tar.gz
Algorithm Hash digest
SHA256 d548865638d9e5cf1cab3c0af9f878e09a3ddb0941fe6a511564541f496d22f8
MD5 79be3823e7ee98706039fca253568b41
BLAKE2b-256 5531371d316c0aaddb4907ba9b0a41fdfd1e8ade510d136397deb306a503dea8

See more details on using hashes here.

File details

Details for the file amebo-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: amebo-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 523.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.17.0-29-generic

File hashes

Hashes for amebo-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e0b41a52ade8fe8ac0fdad0053837f733c98cbcba8fd311450f2cc8211a6befb
MD5 bd27a53abcf86c8b85a13b8b7f800b5e
BLAKE2b-256 cd9a71a8f1588906b934a8806a6fb748a65a83ff13b14eb6bb129718bbc5aa98

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page