Offsider

Small apps that snap in beside your work.

Offsider turns a folder of HTML into a floating Mac window. Your AI agent opens it, hands it data and hears every click as JSON. Its tools run in your own terminal, once you say yes.

$ offsider open review {"type":"opened","panel":"review"}
1xpanel
Review
  • Log in works
  • Checkout flow
  • Empty states

How it goes together

Six steps from an empty folder to a panel your agent can drive. Step 3 works right here on the page.

  1. 1xreview/
    $ offsider init review
    review/ panel.json index.html

    Start a panel

    A panel is a folder. index.html is the app; panel.json sets the window’s size, style and tools. No framework, no build step.

    offsider init review
  2. 1xwindow
    $ offsider open review
    Review
    • Log in works
    • Checkout flow
    • Empty states

    Open it beside the work

    The panel floats in a native window next to your editor. The command that opened it keeps running and owns the window: stop it, and the panel closes.

    offsider open review --input '{"title":"Review","items":["Log in works","Checkout flow","Empty states"]}'
  3. 1xpanel 1xevent

    Try it: tick a box. Demo, running in this page.

    Review
    Review
    offsider open review
    1. {"type":"opened","panel":"review"}

    Click. Your agent hears it.

    Everything that happens in the panel comes out of offsider open on stdout, one JSON object a line. Your agent runs it in the background and reads along: ticks, messages, errors, and the moment the window closes.

  4. 1xnew data
    $ offsider send review '{…}'
    Review
    • Log in works
    • Run the checks
    • Confirm the result

    Send it new data

    From any terminal, hand the open panel fresh input. The app decides what to do with it: replace everything, or merge.

    offsider send review '{"items":["Run the checks","Confirm the result"]}'
  5. 1xtool
    Review
    • PR 377
    • PR 380

    Give it a tool

    Declare commands in panel.json. Before the panel loads, Offsider shows every command, its executable and working directory: allow them all, or cancel. Tools then run in the terminal that opened the panel, with your directory, PATH and logins, so gh, git and bin/rails just work.

    "tools": { "prs": { "command": ["./tools/prs"] } }
  6. 0xwindows
    $ offsider close review{"type":"closed","panel":"review"}
    Review

    Put it away

    Use the close button, run offsider close, or stop the command. The opener prints closed and exits cleanly, so your agent knows the job is done.

    offsider close review

Your agent reads the same instructions

offsider docs

Prints the whole panel reference in the terminal, so an agent can learn the manifest and JavaScript API without leaving the session.

An agent skill, ready to copy

The repository ships skills/offsider/SKILL.md. Copy its folder into your agent’s skill directory and it knows how to open, update and close panels.

Data, never orders

Panel events and tool results are data. They never widen what your agent is allowed to do, and every tool needs your approval first.

AI agent workflows

That’s the whole build.

A folder, a window, a stream of JSON. Everything else is your HTML.