Version: 1.0.0
Status: Stable
Elysium is an API app store that allows developers and AI agents to discover, download, and use APIs programmatically through defined emblemsβYAML files that describe an API's endpoints, parameters, authentication, and types.
APIs are everywhere, but using them requires:
- Reading extensive documentation
- Understanding authentication flows
- Writing boilerplate HTTP client code
- Managing API keys and environment variables
- Handling rate limits, errors, and edge cases
Emblems are machine-readable API definitions that enable:
- π€ AI Agents to use APIs without human intervention
- π¨βπ» Developers to skip documentation dive
- π Automation of complex API workflows
- π¦ Version control for API integrations
- π Self-Update β
ely self-updateupdates the CLI binary in place - π Browser-Based Auth β device-flow OAuth for seamless login
- π¬ Improved Error Messages β actionable suggestions on every failure
- β‘ Better Performance β faster emblem resolution and reduced startup time
- π Update & Outdated Commands β
ely updateandely outdatedare now fully implemented
# One-line install (Linux/macOS) - Recommended
curl -sSL https://raw.githubusercontent.com/Lo10Th/Elysium/main/scripts/install.sh | bash
# Or with wget
wget -qO- https://raw.githubusercontent.com/Lo10Th/Elysium/main/scripts/install.sh | bash
# Install a specific version
curl -sSL https://raw.githubusercontent.com/Lo10Th/Elysium/main/scripts/install.sh | bash -s -- --version v1.0.0
# Using Go install
go install github.com/Lo10Th/Elysium/cli/cmd/ely@latest
# Download binary from GitHub Releases
# Visit: https://github.com/Lo10Th/Elysium/releases# Authenticate
ely login
# Pull emblem
ely pull clothing-shop
# View available actions
ely info clothing-shop
# Execute actions
export CLOTHING_SHOP_API_KEY=your-api-key
# List products
ely clothing-shop list-products
# Create product
ely clothing-shop create-product \
--name "Vintage T-Shirt" \
--price 29.99 \
--category shirts \
--size M \
--color blue
# Place order
ely clothing-shop create-order \
--customer-name "John Doe" \
--customer-email "john@example.com" \
--customer-address "123 Main St" \
--items '[{"product_id": 1, "quantity": 2}]'Use Stripe's test mode keys (prefixed with sk_test_) to try the Stripe emblem safely without real charges.
# Pull the Stripe emblem
ely pull stripe
# Set your Stripe test API key
export STRIPE_API_KEY=sk_test_...
# List customers
ely stripe list-customers
# List customers filtered by email
ely stripe list-customers --email "customer@example.com"
# Create a customer
ely stripe create-customer \
--email "customer@example.com" \
--name "Jane Doe"
# Retrieve a specific customer
ely stripe get-customer --id cus_xyz
# Create a PaymentIntent for $10.00 USD
ely stripe create-payment-intent \
--amount 1000 \
--currency usd \
--customer cus_xyz
# List PaymentIntents for a customer
ely stripe list-payment-intents --customer cus_xyz
# Confirm a PaymentIntent with a test payment method
ely stripe confirm-payment-intent \
--id pi_xyz \
--payment_method pm_card_visa
# List charges
ely stripe list-charges --customer cus_xyz
# Retrieve a specific charge
ely stripe get-charge --id ch_xyzTest mode tip: Stripe test keys start with
sk_test_. Use test card numbers (e.g.4242424242424242) and Stripe's test payment methods (e.g.pm_card_visa) to exercise the full payment flow without real charges. See Stripe testing docs for details.
# Browser-based login (opens browser automatically)
ely login
# β Displays a device code and verification URL
# β Opens your browser and waits for authorization
# β Saves credentials on success
# Email/password login (fallback)
ely login --password
# Show current user
ely whoami
# Log out
ely logout# Update ely to the latest version
ely self-update
# Check for a new version without installing
ely self-update --check
# Install a specific version
ely self-update --version v1.0.0
# Force reinstall even if already up to date
ely self-update --force# Check which installed emblems have updates available
ely outdated
# Update a specific emblem
ely update clothing-shop
# Update all installed emblems at once
ely update --allβββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β β β β β β
β CLI (ely) ββββββββΆ Registry βββββββββ Developer β
β β β (Supabase) β β (You) β
β - Pull β β β β β
β - Execute β β - Store β β - Publish β
β - Search β β - Search β β - Version β
β β β - Auth β β β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β β
β β
βΌ β
βββββββββββββββββββ β
β Emblem YAML β β
β β β
β - Actions β β
β - Types β β
β - Auth β β
βββββββββββββββββββ β
β β
βΌ β
βββββββββββββββββββ β
β Any API βββββββββββββββββ
β β
β - REST β
β - GraphQL β
β - WebSocket β
βββββββββββββββββββ
elysium/
βββ server/ # FastAPI registry backend
β βββ app/
β β βββ routes/ # API endpoints
β β βββ models.py # Pydantic models
β β βββ database.py # Supabase client
β β βββ config.py # Settings
β βββ requirements.txt
β
βββ cli/ # Go CLI tool
β βββ cmd/ # Cobra commands
β βββ internal/
β β βββ api/ # Registry client
β β βββ config/ # State management
β β βββ emblem/ # Parser & validator
β β βββ executor/ # HTTP requester
β βββ go.mod
β
βββ schemas/
β βββ emblem.schema.json # JSON Schema for validation
β
βββ examples/
β βββ clothing-shop/
β βββ emblem.yaml # Complete example
β
βββ docs/
βββ EMBLEM_SPEC.md # Full specification
βββ GETTING_STARTED.md # User guide
βββ SERVER_SETUP.md # Deployment guide
apiVersion: v1
name: clothing-shop
version: 1.0.0
description: REST API for online clothing store
baseUrl: https://api.clothing-shop.example.com
auth:
type: api_key
keyEnv: CLOTHING_SHOP_API_KEY
header: X-API-Key
types:
Product:
properties:
id: { type: integer }
name: { type: string }
price: { type: number }
actions:
list-products:
description: List all products
method: GET
path: /products
parameters:
- name: category
type: string
in: query
create-product:
description: Create a product
method: POST
path: /products
parameters:
- name: name
type: string
in: body
required: trueFull specification: docs/EMBLEM_SPEC.md
ely login # Browser-based login
ely logout # Remove credentials
ely whoami # Show current userely search <query> # Search emblems
ely info <name> # View emblem details
ely list # List installed emblemsely pull <name>[@version] # Pull emblem
ely init <name> # Create new emblem scaffold
ely validate ./emblem.yaml # Validate emblem
ely test ./<dir>/ # Test emblem locallyely <emblem-name> <action> [flags]
# Examples:
ely clothing-shop list-products
ely clothing-shop get-product --id 1
ely stripe create-customer --email "test@example.com"ely keys list # List your API keys
ely keys create <name> # Create new API key
ely keys delete <id> # Delete API key
ely keys show <id> # Show key detailsely update <name> # Update a specific emblem
ely update --all # Update all installed emblems
ely outdated # Show emblems with updates available
ely remove <name> # Uninstall emblem (planned)ely self-update # Update ely to the latest version
ely self-update --check # Check for updates without installing
ely self-update --version v1.0.0 # Install a specific version
ely self-update --force # Force reinstall
ely check-updates # Check if a new ely version is availableThe following commands are planned for future releases:
ely remove <name> # Uninstall emblem
ely publish ./<dir>/ # Publish emblem to registryPOST /api/auth/register # Create account
POST /api/auth/login # Login
POST /api/auth/logout # Logout
POST /api/auth/refresh # Refresh token
GET /api/auth/me # Current user
GET /api/emblems # List all
GET /api/emblems?category=payments # Filter
GET /api/emblems/:name # Get emblem
GET /api/emblems/:name/:version # Get version
POST /api/emblems # Publish new (planned)
PUT /api/emblems/:name # New version (planned)
DELETE /api/emblems/:name # Delete (planned)
GET /api/emblems/search?q=query&sort=downloads&limit=20
cd server
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# Edit .env with Supabase credentials
uvicorn app.main:app --reloadFull setup: docs/SERVER_SETUP.md
cd cli
go mod tidy
go build -o ely ./cmd
./ely --helpcd ../clothing_shop
python -m venv env
source env/bin/activate
pip install -r requirements.txt
python app.py
# API runs on http://localhost:5000Generate API key:
curl -X POST http://localhost:5000/api/auth/generate-key \
-H "Content-Type: application/json" \
-d '{"name": "test-key"}'# Server tests
cd server
pytest tests/ -v
# CLI tests
cd cli
go test ./... -v
# End-to-end
./scripts/e2e-test.sh# Build all platforms
./scripts/build-all.sh
# Creates:
# - ely-linux-amd64
# - ely-linux-arm64
# - ely-darwin-amd64
# - ely-darwin-arm64
# - ely-windows-amd64.exegit tag v1.0.0
git push origin v1.0.0
# GitHub Actions builds and uploads binaries- Emblem specification and schema
- Registry backend (Supabase + FastAPI)
- Go CLI core commands
- Authentication (OAuth + API keys + browser-based device flow)
- Dynamic emblem execution
- Local validation and testing
- Self-update command (
ely self-update) - Update & outdated commands (
ely update,ely outdated) - Improved error messages with actionable suggestions
- Web UI for browsing emblems
- Emblem marketplace
- Private namespaces
- Team collaboration
- API monitoring integration
- Code generation (SDKs)
There are no breaking changes in v1.0.0. All existing commands and emblem YAML files are fully compatible with previous versions.
For a complete history of changes see CHANGELOG.md.
See CONTRIBUTING.md for guidelines on how to contribute to Elysium.
Quick summary:
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Make changes
- Run tests (
go test ./...andpytest tests/) - Commit (
git commit -m 'Add amazing feature') - Push (
git push origin feature/amazing-feature) - Open Pull Request
- Use
gofmtfor formatting - Follow Effective Go
- Add comments for exported functions
- Use meaningful variable names
- Use
blackfor formatting - Use
flake8for linting - Use type hints
- Keep functions under 50 lines
MIT License - see LICENSE
| Document | Description |
|---|---|
| docs/GETTING_STARTED.md | Installation and first steps |
| docs/EMBLEM_SPEC.md | Full emblem YAML specification |
| docs/ARCHITECTURE.md | System design and component overview |
| docs/SERVER_SETUP.md | Deploying the registry server |
| docs/SECURITY.md | Security policy and vulnerability reporting |
| docs/TROUBLESHOOTING.md | Common problems and solutions |
| CONTRIBUTING.md | How to contribute |
| CHANGELOG.md | Version history |
| Emblem | Description |
|---|---|
| examples/clothing-shop | E-commerce REST API (local development) |
| examples/stripe | Stripe payments β customers, intents, charges |
| examples/github | GitHub β repos, issues, pull requests, users |
| examples/slack | Slack β messages, channels, users |
- π Documentation: docs/
- π Issues: GitHub Issues
- π Security: docs/SECURITY.md
Built with β€οΈ for the API economy