Authentication

Enterprise SSO and identity management

SAML 2.0

Okta, OneLogin, PingFederate, AD FS

OpenID Connect

Auth0, Keycloak, Cognito

Azure AD

Azure AD & Azure B2C

Social

Google, GitHub, LinkedIn

Cloud Hosting

Deploy to any major cloud provider

AWS

S3, CloudFront, Lambda, ACM

Azure

Static Web Apps, Blob Storage, CDN

Google Cloud

Cloud Storage, Cloud CDN

CloudFlare

Pages, Workers, R2

Netlify

Deploy, Functions, Forms

Vercel

Deploy, Edge Functions

AI Providers

CHAI supports multiple AI model providers

Anthropic

Claude Opus, Sonnet, Haiku

OpenAI

GPT-4, GPT-3.5, Embeddings

Google

Gemini Pro, PaLM

Mistral

Mistral Large, Mixtral

Cohere

Command, Embed

Local Models

GGUF, Ollama, vLLM

CDN & Performance

Global content delivery and optimization

CloudFlare

CDN, DDoS protection, WAF

CloudFront

AWS CDN with Lambda@Edge

Fastly

Edge computing, instant purge

Azure CDN

Microsoft global network

Bunny CDN

Cost-effective global delivery

Imgix / Cloudinary

Image optimization CDN

Search

Full-text and semantic search

Built-in

Vector + keyword search with CHAI embeddings

Algolia

Hosted search with typo tolerance

Elasticsearch

Self-hosted full-text search

Analytics & Monitoring

Track performance and user behavior

Google Analytics

GA4 integration

Plausible

Privacy-friendly analytics

Datadog

APM & infrastructure

Sentry

Error tracking

Build Your Own

Aether's connector API lets you integrate with any service.

my-connector.sx
use aether::connectors::Connector

connector MyCustomConnector {
    config: ConnectorConfig {
        name: "my-service",
        description: "Integration with My Service",
        auth_type: AuthType::ApiKey,
    },

    receive Sync(data: SyncRequest) -> Result<SyncResponse> {
        // Your integration logic here
        let response = http::post("https://api.myservice.com/sync")
            .header("Authorization", self.config.api_key)
            .json(&data)
            .send().await?

        Ok(response.json().await?)
    }
}