Beta Environment Notice
TDM is currently in Beta. Exercise caution when handling assets. Use at your own risk.
Fast Export
Switch the current page to Markdown for fast agent reading, or download it as a .md file.
TDM is currently in Beta. Exercise caution when handling assets. Use at your own risk.
Fast Export
Switch the current page to Markdown for fast agent reading, or download it as a .md file.
# Publishing Plugins Summary: Building for DaOS means building small sandboxed WASM modules with the TDM IPC ABI. This guide covers the manifest, required exports, catalog submission flow, and release checks. Status: Developer deep-dive Topics: - Plugin architecture - WASI IPC toolchains - Metadata and manifests - Version management Packages: - tdm-sdk Commands: - npm run release:check - tdm plugin publish
Building a plugin for the TDM Hub lets you distribute agent capabilities across the DaOS ecosystem. A production plugin ships as a manifest, a pinned WASM artifact, an SBOM, signed catalog metadata from the local SDK Dashboard, and reviewable files in thetdm-plugins repository.
tdm plugin init or the tdm-plugins template.tdm_alloc, tdm_free, and tdm_plugin_execute_intent..wasm artifact and pin its SHA-256 checksum.tdm plugin publish ./tdm-plugin.json to prepare signed metadata, then run npm run release:check in tdm-plugins before review.Every plugin requires a tdm-plugin.json manifest file. This file tells the Contour Runtime how to execute your plugin and what permissions it needs.
The Contour Runtime writes a JSON-RPC request into exported linear memory, calls your execute function, then reads a length-prefixed JSON response. The response must be a valid Contour execution result. In Rust, usewasm32-wasip1 in current toolchains, or wasm32-wasiin older toolchains.
Ownership: host allocates and frees the request buffer. Plugin owns the response buffer until return. Host frees the response exactly once with tdm_free(response_ptr, response_len + 4).
Limits: request JSON is capped at 512 KiB; response JSON is capped at 1 MiB. Response memory must not overlap the host-owned request buffer.
Shape: output must be a JSON object when present. Unknown top-level result fields are ignored by the host.
TDM uses a capability-based security model. Hub plugins run in a WASM sandbox, must pin checksums, and are blocked from broad filesystem, process, secret, or wildcard network permissions.
network:https — Allows HTTPS-only network capability after host policy review.context:read — Allows scoped context reads supplied by the host.tools:execute — Allows tool invocation only through approved TDM intents.vault:read — Returns non-secret vault metadata only: wallet binding ids, labels, chain names, public addresses, readiness status, and policy limits. It never returns private keys, seed phrases, bearer tokens, TOTP secrets, raw signing payloads, or decrypted credentials.Hub catalog metadata is shared by the website, Dashboard UI, and thetdm-plugins/tdm-skills GitHub repos. Plugins and skills use the same pricing modes (free, paid, freemium,subscription), the same aggregate ratings shape, and explicit complexity fields for filtering. The website is a showcase: publishing, ratings, Ed25519 signatures, and optional Solana/Base anchors are handled by the local SDK Dashboard after install, then submitted as repo files for review instead of being written by the website.