caravan_rpc (Elixir / Erlang) — Pre-release placeholder
Runtime SDK for the Caravan application-definition compiler.
Status: 0.0.1 pre-release placeholder. This release reserves the Hex.pm name. The functional SDK lands at 0.1.0.
Install
def deps do
[
{:caravan_rpc, "~> 0.0.1"}
]
endWhat is Caravan?
Caravan is an application-definition compiler. The same source code deploys across packaging (inproc / container / lambda) × placement (compose / Fargate / Lambda / Batch) × composition (oss-local / cloud-managed) axes by yaml-line changes alone — no source-code edits.
Read the thesis for the full pitch and the PoC RPC SDK spec for what this package will become.
When 0.1.0 ships
defmodule Embedder do
@callback embed(String.t()) :: [float()]
end
defmodule LocalEmbedder do
@behaviour Embedder
def embed(_text), do: [0.1, 0.2, 0.3]
end
CaravanRpc.wagon(Embedder)
CaravanRpc.provide(Embedder, LocalEmbedder)
# caller side — dispatches inproc / http / lambda per CARAVAN_RPC_PEERS
embedder = CaravanRpc.client(Embedder)
vec = embedder.embed("hello")
The 0.0.1 placeholder provides compile-clean stubs but CaravanRpc.client/1 raises — it's not functional yet.
Roadmap
- 0.0.1 (this release): reserve Hex.pm name, compile-clean stubs.
- 0.1.0: functional runtime.
wagon/1,provide/2,client/1work withCARAVAN_RPC_PEERSenv-var dispatch. See development_plan.md.
License
Apache-2.0. See LICENSE.