# Publish a module Publishing writes to your PDS: the wasm, a `com.fedfork.exec.wasm.module` record and the source it was built from. The build runs in a `rust:` container (podman, docker or Apple's `container`), so `atlibs verify` reproduces it anywhere. In the repo from [Write a module](write.md), built once (`cargo wasm` writes `Cargo.lock`): ```bash run=account cd my-module git init -q && git add -A && git commit -qm my-module git remote add origin https://example.com/you/my-module # the source manifest records it atlibs login you.bsky.social atlibs publish --dry-run --as you.bsky.social atlibs publish --as you.bsky.social ``` ```output … would-publish my-module - 0 published, 0 unchanged, 1 would publish, 0 skipped:dirty, 0 drift, 0 failed (cache …) … published my-module you.bsky.social/my-module 1 published, 0 unchanged, 0 would publish, 0 skipped:dirty, 0 drift, 0 failed (cache …) ``` Publishing refuses uncommitted sources. Later runs publish only what changed. Without OAuth: `--app-password you.bsky.social --password-env APP_PASSWORD` in place of `--as`. ## Verify, add, run Anyone can rebuild it and compare, then use it: ```bash run=account atlibs verify you.bsky.social/my-module cd "$(mktemp -d)" atlibs add you.bsky.social/my-module atlibs run my-module describe '{"did":"did:plc:ocnuqjlzgohypj3zoznermms"}' ``` ```output …"reproducible": true… added my-module (you.bsky.social/my-module) pin … ``` ## Remove it ```bash run=account atlibs publish delete com.fedfork.exec.wasm.module/my-module --as you.bsky.social ``` Signed-in modules (a session record), pins, what is uploaded: [Publish a module](../modules/publish.md). Previous: [Write a module](write.md) | Next: [Compose](compose.md)