Every plugin this site ships. Add any plugin under Add to any app to any app: open the app, open Customize (bottom left) and pick it under Add a plugin. Your own plugins go there too, by file, code or address.
- Service
- Gives an app something new that other plugins use, such as a language model.
- On the page
- Draws buttons, panels and views.
- Behind the scenes
- Checks, fetches or changes things, and draws nothing.
- Built in
- A service every app here already has. Some, such as
llm, need a plugin you add to answer.
You see a plugin's code and what it asks for before it is added; it is kept on your device and starts switched off. One that needs a service brings the plugin that provides it. How the registry works · index.json · catalog.json
194 plugins and services
Add to any app
These work in any app, even one whose author never planned for them. Add them from Customize in the app.
Services
Give the app something new that other plugins use, such as a language model. A service draws nothing itself.
Language models
-
Claude (Anthropic)
A language model for this app: Claude, from Anthropic. Uses your own Anthropic API key, which goes only to Anthropic.
- Provides the
llmservice - In Assistant, Librarian, Markdown editor, Security, Home page, Make an app
Asks for 3 permissions
provide:llmAnswer every call this page's plugins make to the llm service.network:api.anthropic.comConnect to api.anthropic.com.secret:anthropicUse a key you give it for anthropic, which it never sees: the site adds it to its requests.
- Provides the
-
Gemini (Google)
A language model for this app: Gemini, from Google. Uses your own Gemini API key, which goes only to Google.
- Provides the
llmservice - In Home page, Make an app
Asks for 3 permissions
provide:llmAnswer every call this page's plugins make to the llm service.network:generativelanguage.googleapis.comConnect to generativelanguage.googleapis.com.secret:geminiUse a key you give it for gemini, which it never sees: the site adds it to its requests.
- Provides the
-
Ollama
A language model for this app that runs on your own computer, with Ollama. No key needed.
- Provides the
llmservice - In no app yet: add it to one
Asks for 2 permissions
provide:llmAnswer every call this page's plugins make to the llm service.network:localhost:11434Connect to localhost:11434.
- Provides the
-
OpenAI
A language model for this app: OpenAI's models. Uses your own OpenAI API key, which goes only to OpenAI.
- Provides the
llmservice - In Home page, Make an app
Asks for 3 permissions
provide:llmAnswer every call this page's plugins make to the llm service.network:api.openai.comConnect to api.openai.com.secret:openaiUse a key you give it for openai, which it never sees: the site adds it to its requests.
- Provides the
On the page
Buttons, panels and views you can add to the page.
Examples
-
World clock
The time in London, New York and Tokyo, at the foot of the page.
- Needs
clock - Draws
append main, so it works on a page with no slot for it - In no app yet: add it to one
Asks for 2 permissions
uiDraw on this page.clockUse clock.
- Needs
Building plugins
-
Ask the page
Answers questions about this page with a language model, from the plugins it is made of.
- Needs
llm: add one of Claude (Anthropic), Gemini (Google), OpenAI, Ollama too - Draws
append main, so it works on a page with no slot for it - In Home page
Asks for 3 permissions
uiDraw on this page.llmUse the llm service: one way for any plugin to ask a language model, whoever makes the model.plugins:readSee which plugins this page has, which are on, and their code.
- Needs
-
Plugin editor
Write a plugin, or change a copy of one on the page, and see what it asks for before it runs.
- Draws
append main, so it works on a page with no slot for it - In Home page
Asks for 4 permissions
uiDraw on this page.plugins:readSee which plugins this page has, which are on, and their code.plugins:authorRead the code of this page's plugins, and add, change, remove or share your own. Each change is shown to you first.debug:readSee everything every plugin does, as the debug console does.
- Draws
-
Plugin maker
Describe a plugin you want for this page: a language model writes it, and you accept its code before it runs.
- Needs
llm: add one of Claude (Anthropic), Gemini (Google), OpenAI, Ollama too - Draws
append main, so it works on a page with no slot for it - In no app yet: add it to one
Asks for 3 permissions
uiDraw on this page.llmUse the llm service: one way for any plugin to ask a language model, whoever makes the model.plugins:authorRead the code of this page's plugins, and add, change, remove or share your own. Each change is shown to you first.
- Needs
Your data
-
Import and export
Buttons to save each of the app's collections to a CSV or JSON file, and to import a file's rows into one.
- Needs
transfer - Draws
append main, so it works on a page with no slot for it - In Spending
Asks for 2 permissions
uiDraw on this page.transferUse the transfer service: import and export for the person: a collection out to a CSV or JSON file they keep, open in a spreadsheet or take to another app, and a file they choose (a bank's statement, a list from a spreadsheet, an earlier export) into a collection.
- Needs
-
Sync
In a space: whether this page reaches it, and the versions of records it kept when someone else changed them first.
- Needs
sync - Draws
append main, so it works on a page with no slot for it - In Feeds, Household, Reading list, Surveys
Asks for 2 permissions
uiDraw on this page.syncUse the sync service: what lets an app open in a space (/s/<space>/…) and be shared by its members.
- Needs
-
Undo
Undo and Redo buttons that take back the app's most recent change to its data, and put it back again.
- Needs
history - Draws
append main, so it works on a page with no slot for it - In Spending
Asks for 2 permissions
uiDraw on this page.historyUse the history service: undo and redo for the person, across every write to an app's collections, whichever plugin made it: a delete in a table, an edit in a form, a book a plugin imported, a change an agent made.
- Needs
Turning plugins on and off
-
Reset
Turns every plugin on the page back on.
- Draws
append main, so it works on a page with no slot for it - In Home page
Asks for 3 permissions
uiDraw on this page.plugins:readSee which plugins this page has, which are on, and their code.plugins:manageTurn this page's plugins on and off.
- Draws
-
Switchboard
A switch for each plugin on the page.
- Draws
append main, so it works on a page with no slot for it - In Home page, Make an app
Asks for 3 permissions
uiDraw on this page.plugins:readSee which plugins this page has, which are on, and their code.plugins:manageTurn this page's plugins on and off.
- Draws
Looking inside
-
Debug console
A bug button that shows errors and the trace, ready to copy into a bug report.
- Needs
debug - Draws
append body, so it works on a page with no slot for it - In Calendar, Contacts, Household, Reading list, Recipes, Spending, Home page, Make an app
Asks for 2 permissions
uiDraw on this page.debug:readSee everything every plugin does, as the debug console does.
- Needs
-
Hook tracer
Shows each hook an action runs, in order, and what every plugin listening said.
- Draws
append main, so it works on a page with no slot for it - In Home page
Asks for 3 permissions
uiDraw on this page.plugins:readSee which plugins this page has, which are on, and their code.debug:readSee everything every plugin does, as the debug console does.
- Draws
-
View source
Shows the code of every plugin on the page, and what each one may do.
- Draws
append main, so it works on a page with no slot for it - In Home page
Asks for 2 permissions
uiDraw on this page.plugins:readSee which plugins this page has, which are on, and their code.
- Draws
Agents
-
Board
Questions from the app's agents, waiting for your answer, and what they did lately.
- Needs
bus - Draws
append main, so it works on a page with no slot for it - In Assistant, Librarian, Markdown editor, Security, Make an app
Asks for 5 permissions
uiDraw on this page.bus:boardUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.hook:listen:bus:askedHear bus:asked.hook:listen:bus:answeredHear bus:answered.hook:listen:agent:*Hear agent:*.
- Needs
Built into this site
Services every app here has, without adding anything. A plugin calls one with ctx.call("name", …) once its manifest asks for it. Which ones a site has is the site's choice, in kernel.json.
-
accountThe person's account on this site's server, for the account app (account/app.html) and only for it.
- Used by 0 plugins here
-
agentsAgents run here, and the app hears what they do.
- Used by 9 plugins here: Assistant, Builder, Chat, App maker, Bibliographer, Librarian, …
-
audioSound for plugins, played by the tab that runs the plugin workers.
- Used by 9 plugins here: Lo-fi, Echo, Sound editor, Telephone, Timeline, Tremolo, …
-
busHow agents and plugins talk to each other and to the person, by message rather than by calling each other.
- Used by 24 plugins here: Assistant, Builder, Chat, Board, App maker, Your apps, …
-
commandsThings a person (or an agent) can do in an app, named once by the plugin that does them, and run from anywhere: a command palette, a keyboard shortcut, or a model's tool call.
- Used by 9 plugins here: Assistant, Command palette, Sound editor, Timeline, Euclidean rhythms, Controls, …
-
debugTools for looking inside a running kernel, which no app needs to run.
- Used by 8 plugins here: Debug console, Hook tracer, Plugin editor, Debugger: events, Debugger: hooks, Debugger: plugins, …
-
emailMail a server plugin sends, with the `email` permission.
- Used by 1 plugin here: Survey answers
-
folderA folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.
- Used by 10 plugins here: Sound editor, Data checker, Outside agents, Hugo preview, Link checker, Posts, …
-
gameA game loop, with every rule of the game in plugins.
- Used by 11 plugins here: Catch, Controls, Jar, Meadow, Chime, Wind, …
-
historyUndo and redo for the person, across every write to an app's collections, whichever plugin made it: a delete in a table, an edit in a form, a book a plugin imported, a change an agent made.
- Used by 1 plugin here: Undo
-
launchFiles opened with an app.
- Used by 1 plugin here: Book files
-
llmOne way for any plugin to ask a language model, whoever makes the model.
- Answered by a plugin you add: Claude (Anthropic), Gemini (Google), Ollama, OpenAI
- Used by 10 plugins here: Assistant, Builder, Ask the page, App maker, Plugin maker, Bibliographer, …
-
makerApps a person makes in the browser, by describing them to the app maker (std/maker/app-maker.agent.md) or by hand.
- Used by 1 plugin here: Your apps
-
notifyThe operating system's notifications, so a plugin can tell the person something while they are in another tab or app (the writer agent has finished, a long export is done).
- Used by 1 plugin here: Notifications
-
outsideLets agents that live outside the app (a browser's own assistant, Claude Code, any MCP client) use it.
- Used by 2 plugins here: Outside agents, Outside agent
-
pageThe app's own page, as far as a plugin's places reach into it.
- Used by 0 plugins here
-
reflectThe kernel describes what is running in it, for debuggers (demos/debugger/).
- Used by 7 plugins here: Debugger: events, Debugger: hooks, Debugger: plugins, Debugger: space server events, Debugger: space server, Debugger: target, …
-
routerA screen for every address: the reading list opened at /demos/reading-list/book/42 shows the screen `/book/42`, so a person can bookmark or share it, and back and forward move between screens.
- Used by 3 plugins here: Board, Book page, Docs
-
scheduleWork a plugin wants done later, once or again and again, with the `schedule` permission.
- Used by 3 plugins here: Feed fetcher, Read feeds here, Survey answers
-
syncWhat lets an app open in a space (/s/<space>/…) and be shared by its members.
- Used by 7 plugins here: Sync, Feeds, Read feeds here, Field, Lobby, Glowfall together, …
-
toolsThe service methods a plugin may call, described as tools a language model can call.
- Used by 10 plugins here: Assistant, Builder, App maker, Bibliographer, Librarian, Outside agents, …
-
transferImport and export for the person: a collection out to a CSV or JSON file they keep, open in a spreadsheet or take to another app, and a file they choose (a bank's statement, a list from a spreadsheet, an earlier export) into a collection.
- Used by 1 plugin here: Import and export
For app authors
Standard plugins and agents an app links in its app.html, rather than ones a person adds: Customize (every app has it), the chat for an app's agents, the command palette, the app maker's own parts. Copy a link tag into your app to use one.
-
App maker
Makes an app from what you describe, or changes one you made, and shows you every file to accept before it is saved.
- Needs
agents,bus,tools - In Make an app
Asks for 6 permissions
apps:makeUse apps:make.apps:readUse apps:read.bus:askUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.llmUse the llm service: one way for any plugin to ask a language model, whoever makes the model.agentUse agent.bus:inboxUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.
- Needs
-
Assistant
Does what you ask in this app, using the app's own commands, and asks you when it isn't sure.
- Needs
agents,bus,tools - In Assistant
Asks for 5 permissions
commandsUse the commands service: things a person (or an agent) can do in an app, named once by the plugin that does them, and run from anywhere: a command palette, a keyboard shortcut, or a model's tool call.bus:askUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.llmUse the llm service: one way for any plugin to ask a language model, whoever makes the model.agentUse agent.bus:inboxUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.
- Needs
-
Builder
Writes a plugin that does what you describe, and shows you its code to accept before it runs.
- Needs
agents,bus,tools - In Assistant, Markdown editor, Home page
Asks for 5 permissions
plugins:authorRead the code of this page's plugins, and add, change, remove or share your own. Each change is shown to you first.bus:askUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.llmUse the llm service: one way for any plugin to ask a language model, whoever makes the model.agentUse agent.bus:inboxUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.
- Needs
-
Chat
Write to the app's agents, such as the assistant or the builder, and read their answers.
- Needs
agents,bus - In Assistant, Markdown editor, Home page
Asks for 2 permissions
uiDraw on this page.bus:send:*Send messages to any agent.
- Needs
-
Command palette
Search everything the app can do, and run it, or press its shortcut.
- Needs
commands - In Assistant, Sound editor, Beat pad, Studio board, Glowfall together, Glowfall, Markdown editor, Reading list, Trails
Asks for 2 permissions
uiDraw on this page.commandsUse the commands service: things a person (or an agent) can do in an app, named once by the plugin that does them, and run from anywhere: a command palette, a keyboard shortcut, or a model's tool call.
- Needs
-
Customize
A Customize button that adds, makes, arranges, turns on and off, removes and shares plugins for an app.
- In no app yet: add it to one
Asks for 4 permissions
uiDraw on this page.plugins:readSee which plugins this page has, which are on, and their code.plugins:authorRead the code of this page's plugins, and add, change, remove or share your own. Each change is shown to you first.plugins:manageTurn this page's plugins on and off.
-
Your apps
Describe an app to make it, or a change to one you made; see each app running, and go back to an earlier version of any file.
- Needs
bus,maker - In Make an app
Asks for 5 permissions
uiDraw on this page.apps:readUse apps:read.apps:makeUse apps:make.bus:send:app-makerSend messages to app-maker.hook:listen:agent:toolResultHear agent:toolResult.
- Needs
From the demos
Each demo's own plugins, and the samples it suggests. Most use their app's data or hooks, so they belong with that app, but each is an ordinary plugin to read and copy. Paste one's address into Customize's Add from URL to try it.
Sound editor 6
-
Echo
An echo for the sound editor.
- Needs
audio - In Sound editor
Asks for 2 permissions
audioUse the audio service: sound for plugins, played by the tab that runs the plugin workers.hook:intercept:sound-editor:effectsChange or stop sound-editor:effects before it happens.
- Needs
-
Lo-fi
A bit crusher for the sound editor.
- Needs
audio - In Sound editor
Asks for 2 permissions
audioUse the audio service: sound for plugins, played by the tab that runs the plugin workers.hook:intercept:sound-editor:effectsChange or stop sound-editor:effects before it happens.
- Needs
-
Sound editor
A clip's waveform to pick parts of, play, edit and run through effects.
- Needs
audio,commands,folder - In Sound editor
Asks for 8 permissions
uiDraw on this page.audioUse the audio service: sound for plugins, played by the tab that runs the plugin workers.commandsUse the commands service: things a person (or an agent) can do in an app, named once by the plugin that does them, and run from anywhere: a command palette, a keyboard shortcut, or a model's tool call.plugins:readSee which plugins this page has, which are on, and their code.audio:kept:sound-timelineUse the audio service: sound for plugins, played by the tab that runs the plugin workers.folder:readUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.folder:writeUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.folder:chooseUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.
- Needs
-
Timeline
Clips laid side by side as tracks you can still move, re-level, pan and mute; plays the mix, or keeps it as a clip.
- Needs
audio,commands - In Sound editor
Asks for 6 permissions
uiDraw on this page.audioUse the audio service: sound for plugins, played by the tab that runs the plugin workers.commandsUse the commands service: things a person (or an agent) can do in an app, named once by the plugin that does them, and run from anywhere: a command palette, a keyboard shortcut, or a model's tool call.data:read:sound-clipsRead the sound-clips records, and hear when they change.data:write:sound-clipsChange the sound-clips records. Unless it made them, you are asked first each time.audio:kept:sound-editorUse the audio service: sound for plugins, played by the tab that runs the plugin workers.
- Needs
-
Tremolo
A tremolo for the sound editor.
- Needs
audio - In Sound editor
Asks for 2 permissions
audioUse the audio service: sound for plugins, played by the tab that runs the plugin workers.hook:intercept:sound-editor:effectsChange or stop sound-editor:effects before it happens.
- Needs
-
Telephone
Sounds like it's on the phone.
- Needs
audio - In no app yet: add it to one
Asks for 2 permissions
audioUse the audio service: sound for plugins, played by the tab that runs the plugin workers.hook:intercept:sound-editor:effectsChange or stop sound-editor:effects before it happens.
- Needs
Beat pad 5
-
Euclidean rhythms
Spreads a number of hits evenly across a row.
- In Beat pad
Asks for 2 permissions
uiDraw on this page.commandsUse the commands service: things a person (or an agent) can do in an app, named once by the plugin that does them, and run from anywhere: a command palette, a keyboard shortcut, or a model's tool call.
-
Ripples
The pattern as a radar, with a ripple for every hit.
- In Beat pad
Asks for 3 permissions
uiDraw on this page.data:read:patternsRead the patterns records, and hear when they change.data:read:transportRead the transport records, and hear when they change.
-
Sequencer
Sixteen steps, six voices: the pads, the clock and the sound.
- In Beat pad
Asks for 2 permissions
uiDraw on this page.audioUse the audio service: sound for plugins, played by the tab that runs the plugin workers.
-
Drums only
Hides the bass and bell rows.
- Draws
hide each .row[data-track='bass'], .row[data-track='bell'] in sequencer, so it works on a page with no slot for it - In no app yet: add it to one
Asks for 2 permissions
uiDraw on this page.ui:transform:sequencerChange how sequencer's view looks.
- Draws
-
Sunset theme
Warm plum surfaces and a coral accent.
- In no app yet: add it to one
Asks for 1 permission
ui:themeChange the app's colours and shapes.
Studio board 7
-
Board
The cards, as a board of columns, and each card on its own screen.
- In Studio board
Asks for 2 permissions
uiDraw on this page.routerUse the router service: a screen for every address: the reading list opened at /demos/reading-list/book/42 shows the screen `/book/42`, so a person can bookmark or share it, and back and forward move between screens.
-
Checklist
Steps for each card: a count on the board, and a checklist on the card's screen.
- In Studio board
Asks for 1 permission
uiDraw on this page.
-
Due dates
How soon each card is due, as a badge on the card.
- In Studio board
Asks for 1 permission
uiDraw on this page.
-
Pulse
Progress, flow and who has what, from the board's cards.
- In Studio board
Asks for 2 permissions
uiDraw on this page.data:read:studio-cardsRead the studio-cards records, and hear when they change.
-
Work-in-progress limits
A limit on how many cards each busy column holds, shown in its header.
- Draws
append each .column-head in studio, so it works on a page with no slot for it - In Studio board
Asks for 2 permissions
uiDraw on this page.ui:transform:studioChange how studio's view looks.
- Draws
-
Focus
Hides the Ideas and Shipped columns, so only the work in flight shows.
- Draws
hide each .column[data-column='ideas'], .column[data-column='done'] in studio, so it works on a page with no slot for it - In no app yet: add it to one
Asks for 2 permissions
uiDraw on this page.ui:transform:studioChange how studio's view looks.
- Draws
-
Midnight theme
Deep blue surfaces and an electric accent at night, cool blue-grey by day.
- In no app yet: add it to one
Asks for 1 permission
ui:themeChange the app's colours and shapes.
Calendar 3
-
Agenda
The next two weeks: events, and birthdays from your contacts.
- In Calendar
Asks for 3 permissions
uiDraw on this page.data:read:eventsRead the events records, and hear when they change.data:read:contactsRead the contacts records, and hear when they change.
-
Events
Add, edit and delete events.
- In Calendar
Asks for 1 permission
uiDraw on this page.
-
Month
A month of events as a grid.
- In Calendar
Asks for 2 permissions
uiDraw on this page.data:read:eventsRead the events records, and hear when they change.
Contacts 4
-
Birthdays
Birthdays coming up, and how old each person will be.
- In Contacts
Asks for 2 permissions
uiDraw on this page.data:read:contactsRead the contacts records, and hear when they change.
-
Next meeting
Adds each person's next calendar event to the birthdays list.
- Draws
append each li[data-name] in birthdays, so it works on a page with no slot for it - In Contacts
Asks for 3 permissions
uiDraw on this page.ui:transform:birthdaysChange how birthdays's view looks.data:read:eventsRead the events records, and hear when they change.
- Draws
-
People
Everyone you know, with a form to add or edit a person and a table of them all.
- In Contacts
Asks for 1 permission
uiDraw on this page.
-
vCard import
Paste vCards to add people to your contacts.
- In Contacts
Asks for 3 permissions
uiDraw on this page.data:read:contactsRead the contacts records, and hear when they change.data:write:contactsChange the contacts records. Unless it made them, you are asked first each time.
Debugger 7
-
Debugger: events
Hooks, calls, refusals, workers and errors as they happen, filtered and paused at will.
- In Debugger
Asks for 5 permissions
uiDraw on this page.reflect:readUse the reflect service: the kernel describes what is running in it, for debuggers (demos/debugger/).debug:readSee everything every plugin does, as the debug console does.bus:read:debugger-focusUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.hook:listen:bus:postedHear bus:posted.
-
Debugger: hooks
Every hook: who defines it, its mode and limits, who listens, and how often it fired.
- In Debugger
Asks for 5 permissions
uiDraw on this page.reflect:readUse the reflect service: the kernel describes what is running in it, for debuggers (demos/debugger/).debug:readSee everything every plugin does, as the debug console does.bus:read:debugger-focusUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.hook:listen:bus:postedHear bus:posted.
-
Debugger: plugins
Each plugin's manifest, requested and granted permissions, refusals, hooks, workers and code.
- In Debugger
Asks for 5 permissions
uiDraw on this page.reflect:readUse the reflect service: the kernel describes what is running in it, for debuggers (demos/debugger/).debug:readSee everything every plugin does, as the debug console does.bus:read:debugger-focusUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.hook:listen:bus:postedHear bus:posted.
-
Debugger: space server
In a space, shows what runs in the kernel on the space's server: its plugins, permissions, hooks, routes, workers and the members connected.
- In Debugger
Asks for 3 permissions
uiDraw on this page.reflect:readUse the reflect service: the kernel describes what is running in it, for debuggers (demos/debugger/).membersUse members.
-
Debugger: space server events
In a space, the trace of the kernel on the space's server as it happens: hooks, calls, refusals and errors.
- In Debugger
Asks for 4 permissions
uiDraw on this page.reflect:readUse the reflect service: the kernel describes what is running in it, for debuggers (demos/debugger/).membersUse members.hook:listen:sync:traceHear sync:trace.
-
Debugger: target
Lists every open tab and its app, and picks the one the debugger looks at.
- In Debugger
Asks for 6 permissions
uiDraw on this page.reflect:readUse the reflect service: the kernel describes what is running in it, for debuggers (demos/debugger/).debug:readSee everything every plugin does, as the debug console does.bus:post:debugger-focusUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.bus:read:debugger-focusUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.hook:listen:bus:postedHear bus:posted.
-
Debugger: workers
Every plugin worker running, grouped by the tab that started it.
- In Debugger
Asks for 5 permissions
uiDraw on this page.reflect:readUse the reflect service: the kernel describes what is running in it, for debuggers (demos/debugger/).debug:readSee everything every plugin does, as the debug console does.bus:read:debugger-focusUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.hook:listen:bus:postedHear bus:posted.
Doodle 1
Feeds 3
-
Feed fetcher
Reads each feed over https on the space's server, every half hour, and keeps the stories.
- In Feeds
Asks for 3 permissions
networkConnect to sites on the internet.scheduleUse the schedule service: work a plugin wants done later, once or again and again, with the `schedule` permission.data:read:feedsRead the feeds records, and hear when they change.
-
Feeds
Follow RSS and Atom feeds, and read their stories.
- In Feeds
Asks for 6 permissions
uiDraw on this page.data:read:itemsRead the items records, and hear when they change.data:read:fetchedRead the fetched records, and hear when they change.data:read:here-itemsRead the here-items records, and hear when they change.data:read:here-fetchedRead the here-fetched records, and hear when they change.syncUse the sync service: what lets an app open in a space (/s/<space>/…) and be shared by its members.
-
Read feeds here
Without a space, reads the feeds you follow on this device, through this site, while the app is open.
- Needs
sync - In Feeds
Asks for 4 permissions
networkConnect to sites on the internet.scheduleUse the schedule service: work a plugin wants done later, once or again and again, with the `schedule` permission.syncUse the sync service: what lets an app open in a space (/s/<space>/…) and be shared by its members.data:read:feedsRead the feeds records, and hear when they change.
- Needs
Glowfall together 6
-
Catches for everyone
Scores each player's catches and the team's, and counts the rain.
- Needs
game - In Glowfall together
Asks for 1 permission
hook:intercept:game:rulesChange or stop game:rules before it happens.
- Needs
-
Field
Draws the game everyone in the space plays, and sends your moves to it.
- Needs
commands,sync - In Glowfall together
Asks for 4 permissions
uiDraw on this page.liveSend and hear live messages with the other people in this space and its server, such as a game's moves.commandsUse the commands service: things a person (or an agent) can do in an app, named once by the plugin that does them, and run from anywhere: a command palette, a keyboard shortcut, or a model's tool call.hook:listen:sync:liveHear sync:live.
- Needs
-
Glowfall together
Runs a game of Glowfall on the space's server, for every member who joins.
- Needs
game,sync - In Glowfall together
Asks for 5 permissions
gameUse the game service: a game loop, with every rule of the game in plugins.liveSend and hear live messages with the other people in this space and its server, such as a game's moves.hook:listen:sync:liveHear sync:live.hook:listen:game:frameHear game:frame.hook:listen:game:endedHear game:ended.
- Needs
-
Jars for everyone
Moves each player's jar a lane, or to the lane they tapped.
- Needs
game - In Glowfall together
Asks for 1 permission
hook:intercept:game:updateChange or stop game:update before it happens.
- Needs
-
Lobby
Joins the game on the space's server, starts it, and shows who is playing and the scores.
- Needs
sync - In Glowfall together
Asks for 7 permissions
uiDraw on this page.liveSend and hear live messages with the other people in this space and its server, such as a game's moves.membersUse members.syncUse the sync service: what lets an app open in a space (/s/<space>/…) and be shared by its members.hook:listen:sync:liveHear sync:live.hook:listen:members:changedHear members:changed.hook:listen:sync:changedHear sync:changed.
- Needs
-
Referee
One jar for each member, moves no faster than a person's, and scores only for fireflies caught.
- Needs
game - In Glowfall together
Asks for 5 permissions
hook:intercept:game:updateChange or stop game:update before it happens.hook:intercept:game:rulesChange or stop game:rules before it happens.hook:intercept:glowfall-together:joinChange or stop glowfall-together:join before it happens.hook:intercept:glowfall-together:moveChange or stop glowfall-together:move before it happens.hook:listen:game:startedHear game:started.
- Needs
Glowfall 7
-
Catch
Scores the fireflies the jar catches and counts the raindrops it doesn't dodge.
- Needs
game - In Glowfall
Asks for 1 permission
hook:intercept:game:rulesChange or stop game:rules before it happens.
- Needs
-
Controls
Start, pause and steer, by button or key, and the best scores.
- Needs
commands,game - In Glowfall
Asks for 5 permissions
uiDraw on this page.gameUse the game service: a game loop, with every rule of the game in plugins.commandsUse the commands service: things a person (or an agent) can do in an app, named once by the plugin that does them, and run from anywhere: a command palette, a keyboard shortcut, or a model's tool call.hook:listen:game:endedHear game:ended.hook:listen:game:startedHear game:started.
- Needs
-
Jar
Moves the jar a lane left or right for each press.
- Needs
game - In Glowfall
Asks for 1 permission
hook:intercept:game:updateChange or stop game:update before it happens.
- Needs
-
Meadow
Draws the night meadow, the jar and everything falling, on a canvas, and steers the jar to where you tap or drag.
- Needs
game - In Glowfall
Asks for 3 permissions
uiDraw on this page.gameUse the game service: a game loop, with every rule of the game in plugins.hook:listen:game:frameHear game:frame.
- Needs
-
Sky
Drops fireflies and raindrops down the five lanes.
- Needs
game - In Glowfall together, Glowfall
Asks for 1 permission
hook:intercept:game:updateChange or stop game:update before it happens.
- Needs
-
Chime
A bell for each catch, a plop for each splash.
- Needs
audio,game - In no app yet: add it to one
Asks for 2 permissions
audioUse the audio service: sound for plugins, played by the tab that runs the plugin workers.hook:listen:game:frameHear game:frame.
- Needs
-
Wind
Gusts that blow falling things sideways.
- Needs
game - In no app yet: add it to one
Asks for 1 permission
hook:intercept:game:updateChange or stop game:update before it happens.
- Needs
Habits 1
Household 4
-
Chores
What needs doing around the house, how often, and who did it last.
- In Household
Asks for 5 permissions
uiDraw on this page.membersUse members.hook:listen:members:changedHear members:changed.bus:read:household-newUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.hook:listen:bus:postedHear bus:posted.
-
Honest stamps
Refuses a change that signs it with someone else's name.
- In Household
Asks for 4 permissions
data:read:groceriesRead the groceries records, and hear when they change.data:read:choresRead the chores records, and hear when they change.hook:intercept:data:beforeWrite:groceriesChange or stop data:beforeWrite:groceries before it happens.hook:intercept:data:beforeWrite:choresChange or stop data:beforeWrite:chores before it happens.
-
Housemates
Everyone who lives here (the space's members), and who is using this device.
- In Household
Asks for 4 permissions
uiDraw on this page.membersUse members.hook:listen:members:changedHear members:changed.bus:post:household-newUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.
-
Shopping list
What the house needs, who added it, and who got it.
- In Household
Asks for 5 permissions
uiDraw on this page.membersUse members.hook:listen:members:changedHear members:changed.bus:read:household-newUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.hook:listen:bus:postedHear bus:posted.
Invoice 3
-
Add a tip
Adds a 10% tip line to the items.
- Draws
append #lines, so it works on a page with no slot for it - In no app yet: add it to one
Asks for 1 permission
uiDraw on this page.
- Draws
-
Pay later
Swaps the pay button for a reminder to pay on the due date.
- Draws
replace #pay, so it works on a page with no slot for it - In no app yet: add it to one
Asks for 1 permission
uiDraw on this page.
- Draws
-
Private memo
A note to yourself about this invoice.
- Draws
prepend main, so it works on a page with no slot for it - In no app yet: add it to one
Asks for 1 permission
uiDraw on this page.
- Draws
Librarian 3
-
Agent activity
Lists what the app's agents did: each run, the tools they called, and how it ended.
Asks for 2 permissions
uiDraw on this page.hook:listen:agent:*Hear agent:*.
-
Bibliographer
Answers questions about who wrote a book and when, asking you when a title could be more than one book.
Asks for 4 permissions
bus:askUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.llmUse the llm service: one way for any plugin to ask a language model, whoever makes the model.agentUse agent.bus:inboxUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.
-
Librarian
Fills in a book's author and first year of publication when they're missing.
Asks for 5 permissions
data:read:libraryRead the library records, and hear when they change.data:write:libraryChange the library records. Unless it made them, you are asked first each time.bus:send:bibliographerSend messages to bibliographer.llmUse the llm service: one way for any plugin to ask a language model, whoever makes the model.agentUse agent.
Markdown editor 25
-
Assistant alerts
Tells you when an agent finishes a reply or stops with an error.
Asks for 2 permissions
uiDraw on this page.hook:listen:agent:doneHear agent:done.
-
Data checker
Lists every number, date, money amount and quote in the post, and has the writer agent check them.
- Needs
bus,document,folder - In Markdown editor
Asks for 7 permissions
uiDraw on this page.document:readUse document:read.folder:readUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.bus:send:writerSend messages to writer.hook:listen:posts:openHear posts:open.hook:listen:posts:changeHear posts:change.hook:listen:posts:closeHear posts:close.
- Needs
-
Dictation
Type by speaking: a Dictate button that puts what you say in at the cursor, with spoken punctuation.
- Needs
document - In Markdown editor
Asks for 5 permissions
uiDraw on this page.document:readUse document:read.document:writeUse document:write.hook:listen:posts:openHear posts:open.hook:listen:posts:closeHear posts:close.
- Needs
-
Edit and save times
Shows when you last edited and last saved the post.
- Needs
document - In Markdown editor
Asks for 6 permissions
uiDraw on this page.document:readUse document:read.hook:listen:posts:openHear posts:open.hook:listen:posts:changeHear posts:change.hook:listen:posts:saveHear posts:save.hook:listen:posts:closeHear posts:close.
- Needs
-
Emoji
Insert an emoji from a picker (Mod+Shift+E), with your recent ones first.
- Needs
document - In Markdown editor
Asks for 3 permissions
uiDraw on this page.document:writeUse document:write.hook:listen:posts:closeHear posts:close.
- Needs
-
Front matter
A form for the post's front matter: title, date, draft, tags and the rest, each with a control that fits.
- Needs
document - In Markdown editor
Asks for 7 permissions
uiDraw on this page.document:readUse document:read.document:writeUse document:write.hook:listen:posts:openHear posts:open.hook:listen:posts:changeHear posts:change.hook:listen:posts:saveHear posts:save.hook:listen:posts:closeHear posts:close.
- Needs
-
Hugo preview
Shows the open post as your site's own hugo server renders it, with your theme, next to the editor.
- Needs
document,folder - In Markdown editor
Asks for 6 permissions
uiDraw on this page.document:readUse document:read.folder:readUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.hook:listen:posts:openHear posts:open.hook:listen:posts:saveHear posts:save.hook:listen:posts:closeHear posts:close.
- Needs
-
Images
Saves images you paste or drop on a post next to it (a page bundle) or in static/images/, and puts a Markdown image or Hugo figure for each in the post.
- Needs
document - In Markdown editor
Asks for 4 permissions
document:readUse document:read.document:writeUse document:write.hook:intercept:posts:pasteChange or stop posts:paste before it happens.hook:intercept:posts:dropChange or stop posts:drop before it happens.
- Needs
-
Link checker
Checks the post's links: internal ones against the site's pages and files, external ones by connecting to them.
- Needs
document,folder - In Markdown editor
Asks for 7 permissions
uiDraw on this page.networkConnect to sites on the internet.document:readUse document:read.folder:readUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.hook:listen:posts:openHear posts:open.hook:listen:posts:saveHear posts:save.hook:listen:posts:closeHear posts:close.
- Needs
-
Notifications
Your computer's notifications when the writer finishes, while you're away from the editor.
- Needs
notify - In Markdown editor
Asks for 3 permissions
uiDraw on this page.notifyUse the notify service: the operating system's notifications, so a plugin can tell the person something while they are in another tab or app (the writer agent has finished, a long export is done).hook:listen:agent:doneHear agent:done.
- Needs
-
Outline
Shows the post's headings, with words per section, in an Outline panel. Click a heading to jump to it.
- Needs
document - In Markdown editor
Asks for 5 permissions
uiDraw on this page.document:readUse document:read.hook:listen:posts:openHear posts:open.hook:listen:posts:changeHear posts:change.hook:listen:posts:closeHear posts:close.
- Needs
-
Outside agents
Lets an agent in your browser read and edit the open post with the writer's tools, through WebMCP.
- Needs
document,outside,tools - In Markdown editor
Asks for 5 permissions
outsideUse the outside service: lets agents that live outside the app (a browser's own assistant, Claude Code, any MCP client) use it.commandsUse the commands service: things a person (or an agent) can do in an app, named once by the plugin that does them, and run from anywhere: a command palette, a keyboard shortcut, or a model's tool call.document:readUse document:read.document:writeUse document:write.folder:readUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.
- Needs
-
Posts
The site's Markdown posts: open one, write, save. Other plugins hear what you do through its hooks, and change the post through its document service.
- Provides the
documentservice - Needs
folder - In Markdown editor
Asks for 5 permissions
uiDraw on this page.folder:readUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.folder:writeUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.folder:chooseUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.provide:documentAnswer every call this page's plugins make to the document service.
- Provides the
-
Readability
Shows the post's reading grade, underlines long sentences, and gives agents a readability report.
- Needs
bus,document - In Markdown editor
Asks for 6 permissions
uiDraw on this page.document:readUse document:read.bus:send:writerSend messages to writer.hook:listen:posts:openHear posts:open.hook:listen:posts:changeHear posts:change.hook:listen:posts:closeHear posts:close.
- Needs
-
SEO check
Checks title and description length, heading order, image alt text and link text, and gives agents an SEO report.
- Needs
bus,document - In Markdown editor
Asks for 6 permissions
uiDraw on this page.document:readUse document:read.bus:send:writerSend messages to writer.hook:listen:posts:openHear posts:open.hook:listen:posts:changeHear posts:change.hook:listen:posts:closeHear posts:close.
- Needs
-
Snippets
Insert saved snippets of text (Mod+Shift+X), save the selection as one, or share them in the site's .editor/snippets.json.
- Needs
document,folder - In Markdown editor
Asks for 5 permissions
uiDraw on this page.document:readUse document:read.document:writeUse document:write.folder:readUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.hook:listen:posts:closeHear posts:close.
- Needs
-
Spell check
Checks the spelling as you write, with the browser's spell checker, and accepts the site's tags and its own word list.
- Needs
document,folder - In Markdown editor
Asks for 6 permissions
uiDraw on this page.document:readUse document:read.document:writeUse document:write.folder:readUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.hook:listen:posts:openHear posts:open.hook:listen:posts:saveHear posts:save.
- Needs
-
Style guide
Underlines words your site's style guide replaces or avoids (.editor/style-guide.json), and has the writer agent apply the guide (.editor/style-guide.md).
- Needs
bus,document,folder - In Markdown editor
Asks for 7 permissions
uiDraw on this page.document:readUse document:read.folder:readUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.bus:send:writerSend messages to writer.hook:listen:posts:openHear posts:open.hook:listen:posts:changeHear posts:change.hook:listen:posts:closeHear posts:close.
- Needs
-
Tag suggester
Suggests tags the site already uses that fit the post, adds the one you pick, and gives agents a suggest-tags tool.
- Needs
bus,document - In Markdown editor
Asks for 6 permissions
uiDraw on this page.document:readUse document:read.document:writeUse document:write.bus:send:writerSend messages to writer.hook:listen:posts:openHear posts:open.hook:listen:posts:closeHear posts:close.
- Needs
-
Word count
Shows the post's word count and reading time in the status bar.
- Needs
document - In Markdown editor
Asks for 6 permissions
uiDraw on this page.document:readUse document:read.hook:listen:posts:openHear posts:open.hook:listen:posts:changeHear posts:change.hook:listen:posts:saveHear posts:save.hook:listen:posts:closeHear posts:close.
- Needs
-
Word goal
Shows progress towards a word count goal, set per post in its panel or with a wordGoal front matter field.
- Needs
document - In Markdown editor
Asks for 5 permissions
uiDraw on this page.document:readUse document:read.hook:listen:posts:openHear posts:open.hook:listen:posts:changeHear posts:change.hook:listen:posts:closeHear posts:close.
- Needs
-
Writer
Works on the open post: checks it with the editor's reports and edits it, for you to keep or undo.
- Needs
agents,bus,tools - In Markdown editor
Asks for 8 permissions
commandsUse the commands service: things a person (or an agent) can do in an app, named once by the plugin that does them, and run from anywhere: a command palette, a keyboard shortcut, or a model's tool call.document:readUse document:read.document:writeUse document:write.folder:readUse the folder service: a folder of files the person works on, such as a Hugo site: on their disk, if they pick one, or a private folder in the browser until they do.bus:askUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.llmUse the llm service: one way for any plugin to ask a language model, whoever makes the model.agentUse agent.bus:inboxUse the bus service: how agents and plugins talk to each other and to the person, by message rather than by calling each other.
- Needs
-
Writing streak
Counts the words you write each day and shows your streak of writing days, with a history panel.
- Needs
document - In Markdown editor
Asks for 4 permissions
uiDraw on this page.document:readUse document:read.hook:listen:posts:openHear posts:open.hook:listen:posts:changeHear posts:change.
- Needs
-
Autosave
Saves the post a few seconds after you stop typing, or every few minutes. Pick when in its settings.
- Needs
document - In no app yet: add it to one
Asks for 5 permissions
uiDraw on this page.document:readUse document:read.document:writeUse document:write.hook:listen:posts:changeHear posts:change.hook:listen:posts:closeHear posts:close.
- Needs
-
Repetition
Underlines words repeated within a few lines of each other, and shows your most used words.
- Needs
document - In no app yet: add it to one
Asks for 5 permissions
uiDraw on this page.document:readUse document:read.hook:listen:posts:openHear posts:open.hook:listen:posts:changeHear posts:change.hook:listen:posts:closeHear posts:close.
- Needs
Menu 2
Reading list 8
-
Book files
Adds an ebook (.pdf or .epub) opened with the reading list as a book to read.
- Needs
launch - In Reading list
Asks for 2 permissions
launchUse the launch service: files opened with an app.data:write:libraryChange the library records. Unless it made them, you are asked first each time.
- Needs
-
Book import
Paste a list of books to add them to the library.
- In Reading list
Asks for 2 permissions
uiDraw on this page.data:write:libraryChange the library records. Unless it made them, you are asked first each time.
-
Book page
Shows one book on its own screen, at book/<id>, so a book can be linked to.
- In Reading list
Asks for 4 permissions
uiDraw on this page.routerUse the router service: a screen for every address: the reading list opened at /demos/reading-list/book/42 shows the screen `/book/42`, so a person can bookmark or share it, and back and forward move between screens.data:read:libraryRead the library records, and hear when they change.shareUse the share service: sharing out, and sharing in: a plugin can hand a link or some text to the system's share sheet (Web Share), and an app installed from the browser can be a place to share to (a share target), so a page shared from the browser lands in the reading list.
-
Due soon
Books due back in the next two weeks, or overdue.
- In Reading list
Asks for 2 permissions
uiDraw on this page.data:read:libraryRead the library records, and hear when they change.
-
Library
The books, with a form to add or edit one and a table of them all.
Asks for 2 permissions
uiDraw on this page.routesUse routes.
-
Outside agent
Lets agents outside the app read the reading list and suggest changes, which you review.
- Needs
outside,tools - In Reading list
Asks for 3 permissions
outsideUse the outside service: lets agents that live outside the app (a browser's own assistant, Claude Code, any MCP client) use it.data:read:libraryRead the library records, and hear when they change.data:write:libraryChange the library records. Unless it made them, you are asked first each time.
- Needs
-
Reading goal
How far you are towards reading 12 books this year.
- Draws
prepend main, so it works on a page with no slot for it - In no app yet: add it to one
Asks for 2 permissions
uiDraw on this page.data:read:libraryRead the library records, and hear when they change.
- Draws
Recipes 4
-
Cookbook
Recipes, and the open recipe scaled to how many you're feeding.
- In Recipes
Asks for 1 permission
uiDraw on this page.
-
Kitchen timer
A timer for the open recipe, in the room the cookbook leaves for it.
- In Recipes
Asks for 1 permission
uiDraw on this page.
-
Quick meals
Recipes you can make in the time you have.
- In Recipes
Asks for 2 permissions
uiDraw on this page.data:read:recipesRead the recipes records, and hear when they change.
-
Shopping list
A shopping list you can fill from a recipe.
- In Recipes
Asks for 2 permissions
uiDraw on this page.data:read:recipesRead the recipes records, and hear when they change.
Security 1
-
Security
Stops card numbers being saved in the library, and checks what the other agents are about to do.
- Needs
agents,bus,tools - In Security
Asks for 5 permissions
data:read:libraryRead the library records, and hear when they change.llmUse the llm service: one way for any plugin to ask a language model, whoever makes the model.agentUse agent.hook:intercept:data:beforeWrite:libraryChange or stop data:beforeWrite:library before it happens.hook:intercept:agent:beforeToolChange or stop agent:beforeTool before it happens.
- Needs
Spending 3
-
Budget
Spending against a monthly budget.
- In Spending
Asks for 2 permissions
uiDraw on this page.data:read:expensesRead the expenses records, and hear when they change.
-
By category
Spending split by category.
- In Spending
Asks for 2 permissions
uiDraw on this page.data:read:expensesRead the expenses records, and hear when they change.
-
Expenses
The expenses, in a table, with a form to add one.
- In Spending
Asks for 1 permission
uiDraw on this page.
Surveys 2
-
Survey answers
Serves each survey as a public form on the space's server, keeps the answers, and emails a daily digest.
- In Surveys
Asks for 4 permissions
routesUse routes.scheduleUse the schedule service: work a plugin wants done later, once or again and again, with the `schedule` permission.emailUse the email service: mail a server plugin sends, with the `email` permission.data:read:surveysRead the surveys records, and hear when they change.
-
Surveys
Build surveys, share a link anyone can answer, and see the answers come in.
- In Surveys
Asks for 4 permissions
uiDraw on this page.data:read:answersRead the answers records, and hear when they change.syncUse the sync service: what lets an app open in a space (/s/<space>/…) and be shared by its members.shareUse the share service: sharing out, and sharing in: a plugin can hand a link or some text to the system's share sheet (Web Share), and an app installed from the browser can be a place to share to (a share target), so a page shared from the browser lands in the reading list.
Trails 6
-
Activities
The log: a feed of activity cards, and a form to add one.
- In Trails
Asks for 1 permission
uiDraw on this page.
-
Personal bests
Longest, fastest and highest, from the log.
- In Trails
Asks for 2 permissions
uiDraw on this page.data:read:activitiesRead the activities records, and hear when they change.
-
Weekly distance
Twelve weeks of distance, stacked by kind, on a canvas.
- In Trails
Asks for 2 permissions
uiDraw on this page.data:read:activitiesRead the activities records, and hear when they change.
-
Year
A year of activity, a square a day.
- In Trails
Asks for 2 permissions
uiDraw on this page.data:read:activitiesRead the activities records, and hear when they change.
-
Forest theme
Moss and pine, light and dark.
- In no app yet: add it to one
Asks for 1 permission
ui:themeChange the app's colours and shapes.
-
Miles
Shows the log's distances in miles.
- Draws
replace each [data-km] in activities, so it works on a page with no slot for it - In no app yet: add it to one
Asks for 2 permissions
uiDraw on this page.ui:transform:activitiesChange how activities's view looks.
- Draws
Trip 3
-
Countdown
How many days until the trip, under the heading.
- Draws
after h1[data-start], so it works on a page with no slot for it - In no app yet: add it to one
Asks for 1 permission
uiDraw on this page.
- Draws
-
Packing list
What to pack, at the bottom of the page.
- Draws
prepend footer, so it works on a page with no slot for it - In no app yet: add it to one
Asks for 1 permission
uiDraw on this page.
- Draws
-
Plum theme
Plum accents and rounder corners for the whole app.
- In no app yet: add it to one
Asks for 1 permission
ui:themeChange the app's colours and shapes.
This site's pages
The home page, the workbench and the docs are made of plugins too: each chapter of the home page's story, the workbench's examples, and the docs' panel.
-
Chapter 1: A tiny core
Explains the kernel, and can turn every plugin on this page off.
- In Home page
Asks for 3 permissions
uiDraw on this page.plugins:readSee which plugins this page has, which are on, and their code.plugins:manageTurn this page's plugins on and off.
-
Chapter 10: An app of your own
Explains how to make a customizable app of your own with one command, run it, and put it online by itself.
- In Home page
Asks for 1 permission
uiDraw on this page.
-
Chapter 11: Let an agent change the page
Explains how an agent writes a plugin for the page, with a recorded run you can replay without a key.
- In Home page
Asks for 2 permissions
uiDraw on this page.plugins:authorRead the code of this page's plugins, and add, change, remove or share your own. Each change is shown to you first.
-
Chapter 12: A second pair of eyes
Explains the checks a plugin goes through before its review card, and tries one that should be stopped.
- In Home page
Asks for 3 permissions
uiDraw on this page.plugins:authorRead the code of this page's plugins, and add, change, remove or share your own. Each change is shown to you first.data:read:security-reviewsRead the security-reviews records, and hear when they change.
-
Chapter 2: Everything is a plugin
Explains what a plugin is, with Note stats as the example and a switch for it.
- In Home page
Asks for 3 permissions
uiDraw on this page.plugins:readSee which plugins this page has, which are on, and their code.plugins:manageTurn this page's plugins on and off.
-
Chapter 3: Hooks
Explains hooks, with Quiet please as the example and a switch for it.
- In Home page
Asks for 3 permissions
uiDraw on this page.plugins:readSee which plugins this page has, which are on, and their code.plugins:manageTurn this page's plugins on and off.
-
Chapter 4: Make your own
Explains how to write a plugin for this page, with the plugin editor below it.
- In Home page
Asks for 1 permission
uiDraw on this page.
-
Chapter 5: Look inside
Explains how to see any plugin's code and follow the hooks an action runs, above view source and the hook tracer.
- In Home page
Asks for 1 permission
uiDraw on this page.
-
Chapter 6: Ask a model
Explains how a plugin asks a language model without ever holding a key, above Ask the page.
- In Home page
Asks for 1 permission
uiDraw on this page.
-
Chapter 7: What a plugin may do
Explains permissions and the gate, and lets you watch the gate refuse this chapter.
- In Home page
Asks for 1 permission
uiDraw on this page.
-
Chapter 8: Your data
Explains collections, schemas and review, and asks you to accept a note it wants to add.
- In Home page
Asks for 2 permissions
uiDraw on this page.data:write:learningChange the learning records. Unless it made them, you are asked first each time.
-
Chapter 9: Views are HTML
Explains how plugins draw, and draws any HTML you type so you can see what the page keeps.
- In Home page
Asks for 1 permission
uiDraw on this page.
-
Docs
Draws a page of the docs, from the Markdown file its address names, beside the list of pages.
- In Docs
Asks for 2 permissions
uiDraw on this page.routerUse the router service: a screen for every address: the reading list opened at /demos/reading-list/book/42 shows the screen `/book/42`, so a person can bookmark or share it, and back and forward move between screens.
-
Docs panel
Opens the docs beside the page, at the page about what you're reading.
- In Home page
Asks for 1 permission
uiDraw on this page.
-
Edit and save times
Shows when you last edited and last saved the note.
- In Workbench
Asks for 5 permissions
uiDraw on this page.hook:listen:notes:openHear notes:open.hook:listen:notes:changeHear notes:change.hook:listen:notes:saveHear notes:save.hook:listen:notes:closeHear notes:close.
-
Fetcher
- In Workbench
Asks for 1 permission
networkConnect to sites on the internet.
-
Learning notes
Your notes as you learn how the page works, kept in this browser.
- In Home page
Asks for 1 permission
uiDraw on this page.
-
No shouting
Stops a note from being saved when it is all capitals.
- In Workbench
Asks for 2 permissions
data:read:notesRead the notes records, and hear when they change.hook:intercept:data:beforeWrite:notesChange or stop data:beforeWrite:notes before it happens.
-
Note lengths
Bars for the length of each note, drawn on a canvas in a worker.
- In Workbench
Asks for 2 permissions
uiDraw on this page.data:read:notesRead the notes records, and hear when they change.
-
Note stats
Counts your learning notes and their words. It reads the notes; it doesn't own them.
- In Home page
Asks for 2 permissions
uiDraw on this page.data:read:learningRead the learning records, and hear when they change.
-
Notes
Notes you can open, edit and save. Other plugins hear what you do through its hooks.
- In Workbench
Asks for 1 permission
uiDraw on this page.
-
Offline
- In Workbench
Asks for nothing
- Nothing: it can't draw, read or change anything.
-
Pinger
- In Workbench
Asks for 1 permission
hook:intercept:bench:pingChange or stop bench:ping before it happens.
-
Quiet please
Stops a note written all in capitals, by listening on the hook that runs before each write.
- In Home page
Asks for 2 permissions
data:read:learningRead the learning records, and hear when they change.hook:intercept:data:beforeWrite:learningChange or stop data:beforeWrite:learning before it happens.
-
Security agent
Reads a plugin of your own before you review it, and stops one that would do something it doesn't say.
- Needs
agents,bus,tools - In Home page
Asks for 3 permissions
llmUse the llm service: one way for any plugin to ask a language model, whoever makes the model.agentUse agent.hook:intercept:plugins:beforeAddChange or stop plugins:beforeAdd before it happens.
- Needs
-
Security check
Stops a plugin of your own that could send your data away, or runs code you can't read, before its review card.
- In Home page
Asks for 1 permission
hook:intercept:plugins:beforeAddChange or stop plugins:beforeAdd before it happens.
-
Sneaky
- In Workbench
Asks for 2 permissions
data:read:notesRead the notes records, and hear when they change.files:*Use files:*.
-
Story view
Switches the page between the guided view and one scrolling story.
- In Home page
Asks for 1 permission
uiDraw on this page.
-
Tidy
Tidies the open note's spacing and exports it as Markdown, to show change review.
- In Workbench
Asks for 6 permissions
uiDraw on this page.hook:listen:notes:openHear notes:open.hook:listen:notes:saveHear notes:save.hook:listen:notes:closeHear notes:close.data:write:notesChange the notes records. Unless it made them, you are asked first each time.files:exportsUse files:exports.
-
Tone
A button that plays a tone, to prove audio runs with no plugin code on the main thread.
- In Workbench
Asks for 2 permissions
uiDraw on this page.audioUse the audio service: sound for plugins, played by the tab that runs the plugin workers.
-
Word count
Shows the note's word count and reading time in the status bar.
- In Workbench
Asks for 5 permissions
uiDraw on this page.hook:listen:notes:openHear notes:open.hook:listen:notes:changeHear notes:change.hook:listen:notes:saveHear notes:save.hook:listen:notes:closeHear notes:close.
-
X-ray
Outlines every part of the page and labels it with the plugin that drew it.
- In Home page
Asks for 1 permission
uiDraw on this page.
Nothing matches. Try fewer words, or .