Amebo
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:
- Applications - Services that publish and consume events
- Actions - Event types with JSON Schema validation
- Events - Actual occurrences of actions with payloads
- 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"
}
}'
🐍 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
Quick Links
- 🚀 Quick Start Guide - Get up and running in 5 minutes
- ⚙️ Installation - Docker, Python, and production setup
- 🏗️ Core Concepts - Understanding Amebo's architecture
- 🔌 API Reference - Complete REST API documentation
- 🐳 Production Deployment - Scaling and monitoring guides
- 💡 Examples - Real-world usage patterns
🏢 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.
- 🐛 Report Issues - Bug reports and feature requests
- 💬 Discussions - Questions and community support
- 🔧 Development - Architecture and development setup
📊 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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| amebo-0.9.6.tar.gz | 1.0 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.