Repository navigation
Add native Extism Erlang host SDK - #1
Merged
Merged
Conversation
Port the combined agent-plan-executor Extism work into this repo: plugin load/call API, kernel and host env, manifests, host functions, WASI, OTP wrappers, bundled guest plugins, and Common Test coverage. Co-authored-by: Steve Manuel <nilslice@users.noreply.github.com>
Use setup-beam with OTP 29.1.1 and rebar3 3.27.0 so CI matches .tool-versions. Cache rebar artifacts and upload Common Test logs when the suite fails. Co-authored-by: Steve Manuel <nilslice@users.noreply.github.com>
nilslice
marked this pull request as ready for review
October 13, 2026 03:15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ports the combined Extism Erlang SDK work from nilslice/agent-plan-executor#13 into this repository.
This is a native Extism host SDK for Erlang/OTP. Plugins run on erlang_wasm. The library implements the Extism kernel, host env, manifests, host functions, and WASI on that engine.
Requires OTP 29+.
API sketch
{ok, P} = extism:open("priv/plugins/count_vowels.wasm"), {ok, Out} = extism:call(P, count_vowels, <<"Hello, World!">>), ok = extism:close(P).The default handle lives in the calling process (no gen_server hop).
start_link/2andchild_spec/3wrap the same API in an OTP worker when you want a name or supervisor.What's included
open/new/call/close) from path, bytes, WAT, bundled name, or manifestpriv/plugins/SOURCES.md).github/workflows/ci.yml) that compiles, runsrebar3 ct, and the count-vowels example on OTP 29.1.1Develop
GitHub links in
rebar.configandextism.app.srcnow point at this repo instead of the plan-executor tree.Verification
Compiled and tested locally on OTP 29.1.1 with rebar3 3.27.0:
rebar3 compile— successrebar3 ct— 20/20 Common Test cases passed (kernel WAT, Rust PDK guests, host functions, WASI/HTTP, OTP worker API)escript examples/count_vowels.escript "Hello, World!"—{"count":3,"total":3,"vowels":"aeiouAEIOU"}0.1.0, kernelv1.7.0