# panel.json A panel folder can hold a `panel.json` next to its `index.html`. Every key is optional. ```json { "title": "Review", "icon": "icon.png", "width": 400, "height": 700, "entry": "index.html", "titlebar": "overlay", "background": "none", "keepOnTop": false, "csp": { "resourceDomains": ["https://avatars.githubusercontent.com"], "connectDomains": [] }, "tools": { "prs": { "command": ["./tools/prs"], "description": "State and CI for a list of pull requests", "timeout": 30 } } } ``` | Key | Default | What it does | | --- | --- | --- | | `title` | the panel's name | The window's title. | | `icon` | a generic panel symbol | A PNG or other image in the panel folder, shown beside its name in Offsider's panel list and on its minimized Dock tile. | | `width`, `height` | `380`, `560` | The size it first opens at. After that, Offsider remembers where you put it and how big you made it, per panel name. | | `entry` | `index.html` | The page to load. | | `titlebar` | `standard` | `overlay` runs the page up behind the close button, for a header that fills the top of the window. See [Behind the titlebar](/docs/panels/titlebar.md). | | `background` | `vibrant` | `vibrant` puts the frosted window material behind a transparent page. `none` leaves the page to paint its own. | | `keepOnTop` | `false` | Set `true` to keep the window above other apps and on every Space, with only a close button. The default is an ordinary window with all three window buttons. The old `floating` key is still accepted. | | `csp` | nothing | Origins the app may load images, scripts, styles and fonts from (`resourceDomains`), or `fetch` (`connectDomains`). | | `tools` | none | Commands the app may run. See [Tools](/docs/panels/tools.md). | | `capabilities` | none | Native access: `foundationModels` and `notifications`, each a boolean. Both require approval. |