NorthlightSDK

Device

Reach the person's Mac from your app: browser, files, Messages and shell, each behind its own scope.

The device provider reaches the person's own Mac. Its tools run on the person's machine (the provider's transport is machine), and each group is its own scope, so ask only for the groups your app needs. What happens when the Mac is asleep or offline is not yet checked on production.

Scopes

device:browser, device:files, device:messages_read, device:messages_send and device:shell. Add them under What it asks for → Add permissions (provider device).

Tools

Captured 2026-10-16 from GET /v1/providers/device/tools on a joined runtime (provider major version 2, transport machine). * marks a required parameter.

Group (scope)Tools
browserbrowser profiles, browser executor create (url, mode, profile, target-pattern), browser executor list, browser executor navigate (executor*, url*), browser executor exec (executor*, code*, timeout-ms, short-description), browser executor result (run*), browser executor close (executor*), browser libs (query, limit, service, fn), browser cdp (method*, params, tab)
filesfiles list (path*, limit), files stat (path*), files read (path*, encoding, offset, length), files write (path*, text, base64, from, append, parents), files delete (path*, recursive), files move (from*, to*, overwrite), files mkdir (path*)
messages_readmessages chats (limit), messages history (chat, participant, since, until, limit, attachments), messages search (text*, limit), messages contacts (query*, limit), messages permissions (open)
messages_sendmessages send (recipient*, text*, file, service)
shellshell run (command*, cwd, timeout, stdin)

Tool names with spaces are written as the provider lists them; check how to pass them to providers.call against your own providers.tools output (not yet checked on production). The capture is of a person's own grant, not an app's. Run runtime.providers.tools('device') for the list your app can use.

On this page