The Three Layers

Ryu currently has two main forms of distribution:

  1. Client App (Desktop/Tauri), power users, local-first, bring your own models, full control
  2. Gateway as a Service (Cloud), developers/teams connect via API, plug into their own apps, self-configure

There's a missing third layer:

  1. Hosted Bot (zero-setup), consumer/prosumer, sign up and go, like Poke or Lindy

The Tension

The Cloud/Gateway is the infrastructure layer, and technically the zero-setup hosted bot would run on top of that same cloud infra. So it's not a separate backend, it's a separate product surface with a different onboarding philosophy and audience.

The confusion comes from mixing infrastructure tiers with product experiences.

Reframe: One Backend, Three Surfaces

graph TD
    subgraph Core["Ryu Core (Rust engine)"]
        GW["Ryu Gateway"]
    end

    subgraph Surfaces["Three Product Surfaces"]
        S1["Surface 1: Desktop App\n(Tauri, local-first, power users)"]
        S2["Surface 2: API/SDK\n(developers self-integrate)"]
        S3["Surface 3: Hosted Web Bot\n(zero-setup, consumer-facing)"]
    end

    S1 --> GW
    S2 --> GW
    S3 --> GW

All three surfaces consume the Gateway. The difference is:

Desktop App API/SDK Hosted Bot
Audience Power users, devs Teams, builders Everyone, non-technical
Setup Install app, configure API key, docs Zero, just sign up
Customization Full (local models, sidecars) High (programmatic) Low (UI-based integrations)
Moat Local-first + agent switching Infra flexibility Ease of use, network effects

Resolving the "Cloud Supports All 3" Problem

Cloud does support all 3, but the products are different:

The key distinction: the hosted bot layer is a managed product, not just infra. You're making all the decisions for the user, pre-configuring defaults, hiding complexity. The Gateway is still underneath, but the user never sees it.

How to Think About It

Don't think of it as 3 conflicting distribution channels. Think of it as: