Extensions

what your mind can learn to do · in the desktop body since October 2026

An extension adds to your mind without changing the engine: words it carries, rhythms it keeps, abilities it can use. It lives next to your memory, travels with it in your sealed backup, and does nothing until you approve it on each machine.

What an extension can add

Safe by default

Packages you can share: .aedext

The Lodge exports any extension as one .aedext file containing its files and their hash. The file leaves out the extension's saved data and your approvals.

Import treats every package as possibly hostile. It refuses:

An imported extension always waits for your approval, even when it replaces one you'd already approved.

Signed by their author

An author can sign a package with an Ed25519 key. Your machine checks the signature itself, without going online, so it never has to ask us whether a package is genuine.

A package reviewed by Aedelgard also carries our stamp. Your machine checks the stamp itself, offline, against a key built into every body. The stamp comes with a short certificate from that key, so if a stamping key were ever compromised we could replace it without shipping a new body.

Where it stands

Plain-text extensions: layers, routines, recipes, skillslive
Personal code extensionslive
.aedext export and importlive
Author signatures and author pinninglive
Public catalogue, reviewed by a person and countersignedlive, opening with its first reviews
Public log of every countersignature, and a recall listlive
Shared code extensionsafter the sandbox

The catalogue

To install: open the Lodge in your body, choose browse, and pick one. Your body downloads it, checks our stamp and the file's fingerprint itself, and adds it switched off, waiting for your approval. You can also download the .aedext here and import it by hand; your body checks the signatures the same way.

Nothing is hidden. Every package's full text is in the download. Every stamp we give is written to the public log. The recall list is signed, your body checks it once a day, and a recalled extension is switched off on your machine with the reason shown.

What never travels: what your mind learned from its own mistakes. Those lessons are its own history. A lesson worth sharing can be written as a skill.

Privacy: browsing the catalogue from your body tells us only that a body exists. You can switch it off with one setting, AEDELGARD_CATALOGUE=off.

Why the catalogue reads every word

The approval gate stops a dangerous tool. It doesn't stop persuasion. A prompt layer sits in the mind's most trusted position, and a few quiet sentences could steer it, for example toward "copy the owner's notes into every web request". That passes every automatic check.

So every prompt layer, routine prompt and skill in the catalogue is read in full by a person before we countersign it. The reviewer looks for:

Every countersignature goes into a public log, so a package we quietly swapped would be visible. A recalled package is disabled on your machine, and you're told why. On your machine, the approval screen shows the full text, not a summary.

Why shared code waits

Today, extension code runs inside the body itself, with the body's full power. We won't deliver a stranger's code to your machine until a sandbox limits what it can do. Until then, code extensions are for code you wrote or have read yourself.

Build one

An extension is a folder next to your memory:

extensions/<name>/
  extension.json     the manifest: everything it adds, nothing more
  layers/*.md        prompt layers
  routines.json      scheduled prompts
  commands/          recipes
  skills/*.md        playbooks
  extension.py       optional: makes it a code extension
  data/              the only place it may write

The full format is published in the open (the Aedelgard Mind Format, part 4). To sign outside the app:

python -m harness.ext_signing keygen my-key.json
python -m harness.ext_signing sign rhythms-1.0.0.aedext my-key.json
python -m harness.ext_signing verify rhythms-1.0.0.signed.aedext

Keep my-key.json to yourself. It's the only proof that your next version comes from you.