API Reference ExAtlas v#0.5.0

Copy Markdown View Source

Modules

ExAtlas is a composable, pluggable Elixir SDK for managing GPU and CPU compute across multiple cloud providers (RunPod, Fly.io Machines, Lambda Labs, Vast.ai, or any module you write that implements ExAtlas.Provider).

Supervision tree for ExAtlas.

HMAC-signed URLs with expiry, for the cases where a client can't set request headers (e.g. <video src>, <img src>, WebSocket upgrade without a subprotocol).

Bearer-token authentication for the "transient per-user pod" pattern.

Resolves which provider and which API key a call should use.

Canonical error shapes returned by every ExAtlas.Provider callback.

Fly.io platform operations for ExAtlas.

Discovers Fly.io apps (via fly.toml) and runs deploys against them.

Framework-agnostic broadcast for Fly log and deploy events.

HTTP client for the Fly Machines log API.

A single parsed log line from the Fly Machines log API.

Per-app GenServer that polls the Fly log API and dispatches new entries.

Supervises per-app Fly log Streamer processes.

Top-level supervisor for the Fly platform-ops sub-tree.

Behaviour for durable Fly token storage.

Public facade for Fly.io API token resolution.

Per-app Fly-token resolver.

Owns the shared :public :named_table ETS table used by every ExAtlas.Fly.Tokens.AppServer.

Registry process that ExAtlas.Fly.Tokens.Supervisor starts under the Fly sub-tree.

Supervises the Fly-tokens trio: Registry + ETSOwner + DynamicSupervisor.

Phoenix.LiveDashboard.PageBuilder page that lists the compute resources currently tracked by ExAtlas.Orchestrator and lets operators terminate them.

Opt-in OTP orchestration for transient-per-user compute sessions.

Registry used by the orchestrator to look up ExAtlas.Orchestrator.ComputeServer processes by resource id.

One GenServer per tracked compute resource.

DynamicSupervisor that parents one ExAtlas.Orchestrator.ComputeServer per tracked resource. Started automatically when config :ex_atlas, start_orchestrator: true.

PubSub helpers for orchestrator state changes.

Periodic reconciliation GenServer.

Behaviour every compute provider must implement.

Placeholder for the Fly.io Machines provider (planned for ExAtlas v0.2).

Placeholder for the Lambda Labs Cloud GPU provider (planned for ExAtlas v0.2).

In-memory provider for tests and demos.

Thin wrappers over RunPod's REST /billing/* endpoints.

Shared Req client factories for RunPod's three APIs

Thin wrappers over RunPod's REST /endpoints (serverless).

Minimal GraphQL client built on Req, used only for the few RunPod operations not exposed by the REST API (chiefly gpuTypes pricing).

Serverless job operations against api.runpod.ai/v2/<endpoint>.

Thin wrappers over RunPod's REST /networkvolumes.

Thin wrappers over RunPod's REST /pods endpoints. Each function returns {:ok, body} | {:error, ExAtlas.Error.t()}.

Thin wrappers over RunPod's REST /templates.

Translation layer between ExAtlas normalized specs and RunPod's native REST payloads.

Shared base for placeholder providers that haven't been implemented yet.

Placeholder for the Vast.ai marketplace provider (planned for ExAtlas v0.3).

Normalized representation of a running or tracked compute resource.

Provider-agnostic request for a compute resource (pod/machine/instance).

Canonical GPU atoms mapped to each provider's native identifier.

Normalized GPU type + pricing entry returned by list_gpu_types/1.

Normalized representation of a serverless inference job.

Provider-agnostic request to run a serverless inference job.

Mix Tasks

Installs ExAtlas into your project.

Runs upgrade steps between ExAtlas versions.