HTTP Event Notifications Server - A lightweight, schema-driven event broadcasting system for microservices and distributed applications
Project description
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"
}
}'
📚 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file amebo-0.6.0.tar.gz.
File metadata
- Download URL: amebo-0.6.0.tar.gz
- Upload date:
- Size: 457.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.14.0-33-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
824488335c4a48d7dbe93966dccd2c4efbabdca98bef0f1df48d300d9981eacf
|
|
| MD5 |
969e1a55a24f9db76a9f9b6db4c23632
|
|
| BLAKE2b-256 |
2bf0bfc5a90cf4c21758df65bc8df2bbcd2552d3627d0f8022d670a5037f9992
|
File details
Details for the file amebo-0.6.0-py3-none-any.whl.
File metadata
- Download URL: amebo-0.6.0-py3-none-any.whl
- Upload date:
- Size: 483.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.14.0-33-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c325918333b467ce46fc0de714b5653fe8c70cbcd5c51def5bf7a8d4b6ea3af
|
|
| MD5 |
f5432f8e055d3405d0cdd9762445dc80
|
|
| BLAKE2b-256 |
a637187ef52edb78931c91a096be76bdf726def2993211506c7fb6175ee4e198
|