Jiron based server for controlling adobe/data ECS based applications.
The Rune dev bridge lets an AI agent control your app over the Vite dev server: it gets a live snapshot (states + actions) and can invoke actions by POSTing to the bridge. Only active in development.
-
Vite — Add the bridge plugin and exclude rune from optimizeDeps (so the bridge runs correctly in dev):
- packages/tictactoe/vite.config.ts:
createRuneDevBridgeVitePlugin()inplugins, andexclude: ["@paralleldrive/rune"]inoptimizeDeps.
- packages/tictactoe/vite.config.ts:
-
React — Mount the bridge with your root
AgenticServiceand the HMR client:<RuneDevBridgeReact service={db.services.agent} hmrClient={import.meta.hot} />(e.g. packages/tictactoe/src/app.tsx).
Your app must expose an AgenticService (states, actions, and optionally links) for the bridge to serve; the bridge only wires it to HTTP. The exact structure of the service (states, actions, links) is what gets displayed. Example: packages/tictactoe/src/plugins/agent-plugin.ts defines a root service with two links (x and o); GET /__rune_bridge returns the root snapshot (with links), and GET /__rune_bridge/x or /__rune_bridge/o returns the snapshot for that linked service.
Open up an AI agent which can create curl requests.
Paste this into the chat
IMPORTANT! Do not scan any files or research anything within the codebase.
curl this url and play the game: http://localhost:3003/__rune_bridge
Describe why you are taking each action concisely before each curl.
- Open up the app, usually at http://localhost:3003
- Verify it says Rune Bridge (Host Active)
- Browse another tab to
http://localhost:<port>/__rune_bridge - Run an action with open
.../actions/<name>?post=<input>or just...?postif there is no input.