Omniscio documentation
Browse all documentation
  1. Getting Started19
  2. Sessions & Agents134
  3. Inbox & Notifications67
  4. Projects & Tasks98
  5. Automation & Scheduling78
  6. Knowledge & Memory28
  7. AI Features71
  8. Integrations106
  9. Plugins & Marketplace35
  10. Cloud & Teams53
  11. Settings & Customization71
  12. Account & Billing28
  13. Troubleshooting79
  14. CLI & API Reference27
  15. Legal & Policies5
  16. Uncategorised17

Script Widgets

A script widget is a small live indicator your own script puts in Omniscio's titlebar through the local API — a count, a status pill, a dot, a gauge or a trend line. Covers how to send one, what it may contain, how it is labelled, and how to remove or turn it off.

What it is

You write a small script — it watches your builds, a price, a to-do count, anything — and it tells Omniscio what to show. Omniscio draws a little widget in the top bar next to the built-in ones, and updates it every time your script sends a new value.

No plugin, no manifest, no install: one web request shows it, another updates it, another removes it. If you want a widget that opens its own page when clicked, build a plugin widget instead (plugin-widgets.md).

Where to find it

In the top titlebar, beside the other header widgets, as soon as a script sends one. Hover it to see its label — always "<name> · from a script" — followed by whatever tooltip text your script sent. Drag it left or right like any titlebar widget.

How it behaves

Sending one

Your script needs your Omniscio key, which lives in ~/.amc/cli-token on your computer.

TOKEN=$(cat ~/.amc/cli-token)
curl -s -X PUT http://127.0.0.1:19519/widgets/builds \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"Builds","shape":"stat","value":"3","label":"failing","tone":"error","tooltip":"3 of 12 builds red"}'

The same call again with a new value updates it. Remove it with:

curl -s -X DELETE http://127.0.0.1:19519/widgets/builds -H "Authorization: Bearer $TOKEN"

A Node script that refreshes a widget every ten seconds:

const fs = require('node:fs')
const os = require('node:os')
const token = fs.readFileSync(`${os.homedir()}/.amc/cli-token`, 'utf8').trim()

async function show(value) {
  await fetch('http://127.0.0.1:19519/widgets/open-tasks', {
    method: 'PUT',
    headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
    body: JSON.stringify({ name: 'Open tasks', shape: 'stat', value: String(value), tone: 'neutral', icon: 'ListChecks' })
  })
}

setInterval(() => show(Math.floor(Math.random() * 10)), 10_000)

What a widget can contain

The same short description plugin widgets use — Omniscio picks every colour, font and pixel:

Field What it is
name Your widget's name, up to 24 characters — shown as "<name> · from a script"
shape stat, pill, dot, gauge or sparkline
value Up to 8 characters
label Up to 16 characters
tooltip Up to 120 characters, shown after the app's own label
tone A meaning — neutral, running, needs-you, error, ember or accent
icon An icon name from Omniscio's list, such as Zap, Bell, ListChecks or ShieldCheck
progress 0 to 1, for a gauge
series Up to 32 numbers, for a sparkline

Anything else is refused with a plain reason. The short text limits are deliberate: the titlebar sits next to your account switcher, so nothing up there may be long enough to fake "Your session expired, sign in again".

Limits and safety

  • Only your own key works. An AI session's limited key is refused, so no agent can change your titlebar with its own credentials.
  • Six at a time. A seventh is refused until you remove one; nothing is ever pushed out.
  • Update as often as you like, within reason. Omniscio redraws at most four times a second and ignores an update that changes nothing; one widget may update 60 times a minute.
  • Cleared on restart. Script widgets live only while the app runs — a script just keeps sending.
  • Desktop only. They never appear on a paired phone.

Removing or turning them off

Right-click a script widget and choose Remove to hide it; it stays hidden even while the script keeps sending. Use Undo on the toast that appears to bring it straight back — a removed widget is not yet listed in Settings → Widgets, so that toast is the way to undo it. To turn off every titlebar widget — plugin and script alike — switch Header Widgets off in Settings; while it is off, scripts get a plain "switched off" answer.

For agents

Routes, gating and every field: the omniscio-control skill's script-widgets spoke. Write calls are full-trust only (cliTokenOnly), self-rate-limited per widget id, and answer 201 created / 200 updated / 400 invalid / 403 switched off / 409 at the cap of six / 429 over budget. The rules that must stay true live in the script widget contract (.claude/memory/contracts/script-widget-contract.md).

Related

Plugin widgets (plugin-widgets.md) are the richer sibling — same faces, plus a click-to-open page drawn by the plugin. The built-in titlebar widgets and how to reorder them are in header-widgets.md.

Last verified 2026-10-13