Official Portaki Wasm guest modules monorepo
Independently versioned Extism modules, published to GitHub Container Registry as public OCI images.
Modules · Requirements · Development · Publishing · Marketplace order · Contributing · Security
Each crate under modules/ is a Portaki guest module. Authoring uses portaki-sdk (portaki CLI).
On every push to main, CI builds and publishes:
ghcr.io/portakiapp/portaki-modules-<module-id>:<semver>
- One repo per ecosystem — shared CI, shared SDK pins, consistent lint/build gates
- Independent versions — each module bumps its own
Cargo.tomlsemver - OCI-first — dash-named public GHCR packages (
portaki-modules-weather, …) - Pattern A — official modules live here; third-party modules use standalone repos + the same SDK
| Module | OCI image | Description |
|---|---|---|
access-guide |
ghcr.io/portakiapp/portaki-modules-access-guide:<semver> |
Arrival steps, codes, and parking |
appliances |
ghcr.io/portakiapp/portaki-modules-appliances:<semver> |
Device guides and safety notice |
checklist |
ghcr.io/portakiapp/portaki-modules-checklist:<semver> |
Checkout checklist with guest toggles |
consumables |
ghcr.io/portakiapp/portaki-modules-consumables:<semver> |
Consumables catalog, guest shortages, restock tracking |
emergency-contacts |
ghcr.io/portakiapp/portaki-modules-emergency-contacts:<semver> |
Useful numbers and host line |
ev-parking |
ghcr.io/portakiapp/portaki-modules-ev-parking:<semver> |
EV spot, gate code, charger PIN with timed reveal |
events |
ghcr.io/portakiapp/portaki-modules-events:<semver> |
Host-curated local events and map |
facility-hours |
ghcr.io/portakiapp/portaki-modules-facility-hours:<semver> |
Pool, spa, and shared amenity schedules |
guest-reviews |
ghcr.io/portakiapp/portaki-modules-guest-reviews:<semver> |
Post-stay thank-you and review CTAs |
ical-sync |
ghcr.io/portakiapp/portaki-modules-ical-sync:<semver> |
Host iCal / Airbnb calendar feed import |
issue-report |
ghcr.io/portakiapp/portaki-modules-issue-report:<semver> |
In-stay problem reports for the host |
local-guide |
ghcr.io/portakiapp/portaki-modules-local-guide:<semver> |
Nearby spots and host picks |
lost-found |
ghcr.io/portakiapp/portaki-modules-lost-found:<semver> |
Guest lost / found item reports |
nuki |
ghcr.io/portakiapp/portaki-modules-nuki:<semver> |
Nuki smart-lock provider for access-guide |
pre-arrival-form |
ghcr.io/portakiapp/portaki-modules-pre-arrival-form:<semver> |
ETA, occasion, allergies, message to host |
rules |
ghcr.io/portakiapp/portaki-modules-rules:<semver> |
Structured bilingual house rules |
sections |
ghcr.io/portakiapp/portaki-modules-sections:<semver> |
Editorial title + markdown body blocks |
train |
ghcr.io/portakiapp/portaki-modules-train:<semver> |
Nearby station departure board |
waste-recycling |
ghcr.io/portakiapp/portaki-modules-waste-recycling:<semver> |
Bins and collection schedule |
weather |
ghcr.io/portakiapp/portaki-modules-weather:<semver> |
Current weather and 5-day forecast |
wifi-guest |
ghcr.io/portakiapp/portaki-modules-wifi-guest:<semver> |
Guest Wi-Fi SSID and password with timed reveal |
portaki-modules/
├── Cargo.toml # workspace + shared SDK git deps (portaki-sdk main / 2.1+)
├── modules/
│ ├── access-guide/ # each crate: ids.rs, guest/, host/, …
│ ├── appliances/
│ ├── checklist/
│ ├── consumables/
│ ├── emergency-contacts/
│ ├── ev-parking/
│ ├── events/
│ ├── facility-hours/
│ ├── guest-reviews/
│ ├── ical-sync/
│ ├── issue-report/
│ ├── local-guide/
│ ├── lost-found/
│ ├── nuki/
│ ├── pre-arrival-form/
│ ├── rules/
│ ├── sections/
│ ├── train/
│ ├── waste-recycling/
│ ├── weather/
│ └── wifi-guest/
└── .github/workflows/
└── ci.yml # quality gates; publish to GHCR on main
- Rust 1.75+
- Target
wasm32-unknown-unknown portakiCLI fromportaki-sdk
rustup target add wasm32-unknown-unknown
cargo install --git https://github.com/PortakiApp/portaki-sdk --branch main --locked portaki-clicargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cd modules/weather
portaki build --release
portaki lintSee CONTRIBUTING.md for adding a new module.
- Bump
versioninmodules/<id>/Cargo.toml - Merge to
main - CI publishes
ghcr.io/portakiapp/portaki-modules-<id>:<semver>
GHCR packages are public. CI publishes with GITHUB_TOKEN (packages: write). Local publish needs a classic PAT with write:packages (or docker login ghcr.io).
| Repository | Role |
|---|---|
| portaki-sdk | Rust SDK + portaki CLI |
| portaki.app | Product site |
See CONTRIBUTING.md and the Code of Conduct.
Security issues: SECURITY.md — do not open a public issue.
Apache-2.0 · Copyright 2026 Syntax Labs