1
Create the extension directory
Create a new directory for your extension and move into it:
2
Create package.json
Create a The
package.json that points Aether to your entry file:package.json
aether.extensions array tells Aether which files to load as Script Mods. The API declaration rejects incompatible runtimes, and the types-only development dependency provides editor completion. Run npm install before editing.3
Create the extension entry file
Create
index.ts with a surface registration and an action handler:index.ts
defineAetherExtension wraps your factory and provides full TypeScript types for the aether API. registerAction binds the string "insert-prompt" to a handler that writes to the draft_input state path. registerSurface injects your button into the chat.composer.top slot — directly above the message input field.4
Zip the extension
Package the directory as a zip archive:The zip may contain the package at the archive root or inside exactly one top-level package directory.
5
Install in Aether
Open the conversation drawer, then go to Settings → Extensions → Import extension. Select
my-first-extension.zip. Aether extracts the package into ~/.aether/extensions and hot-loads the extension immediately — no restart required.6
Test the extension
Navigate to the chat screen. You should see the Insert summary prompt button rendered above the composer input. Tap it — Aether calls your
insert-prompt action handler, which patches draft_input with the preset text. The composer field fills instantly.If the button does not appear, open Settings → Extensions and confirm your extension is listed and enabled. Check the error log on that screen for any load-time issues.Next steps
Extend your mod further with the full Script Mod API:UI Surfaces
Register content in additional chat and settings slots, or replace built-in Compose components entirely.
State API
Read and write app state paths including
draft_input, selected_skill_ids, agent_mode_enabled, and more.Pages
Add full-screen drawer pages with native Compose layouts driven entirely from TypeScript.
Native Mods
Unlock full Android and Compose access by writing Kotlin DEX mods that load at process startup.