What works
What Tinycast supports from the Raycast API, how well it works in practice, and the known gaps.
How well it works
We tested Tinycast against the 37 extensions installed in Raycast on the development Mac:
32 of 37 extensions, and 114 of 147 view commands, open and render.
Supported
Components. List and Grid with sections, empty views, item details and search bar dropdowns.
Detail with Metadata. Form with every field type: text, password, text area, checkbox,
dropdown, tag picker, date picker, file picker, separator and description. ActionPanel with
sections and submenus, and Action with all its built-in variants. Older names still used by
published extensions also work.
APIs. Clipboard, LocalStorage, Cache, environment, getPreferenceValues, showToast,
showHUD, confirmAlert, closeMainWindow, popToRoot, clearSearchBar, open, trash,
showInFinder, getApplications, getDefaultApplication, getFrontmostApplication,
getSelectedText, getSelectedFinderItems, launchCommand, updateCommandMetadata,
openExtensionPreferences, OAuth, useNavigation, Icon, Color, Image.Mask,
Keyboard.Shortcut.Common, LaunchType.
Sign-in with OAuth. Extensions like GitHub sign you in through your browser, and the palette comes back when you finish. Sign in from one of the extension's commands first: a background refresh or menu bar item can't start a sign-in on its own.
Node built-ins. path, fs and fs/promises, os, child_process, crypto, zlib,
http and https, stream, util, events, buffer, url, querystring, punycode,
assert, string_decoder and timers. Other built-ins load without errors and only fail when
they're actually used.
http and https requests use the same code as fetch, so libraries like axios and node-fetch
work. HTTP over a Unix socket works too, which is how Docker's extension reaches its daemon. Streams
are fully implemented, so pipelines like fetch → file work from start to finish.
child_process.spawn streams the command's output as it runs.
WebSockets. The WebSocket global and the bundled ws package both connect, so extensions like
Home Assistant get live updates. Names ending in .local, like homeassistant.local, resolve
through macOS.
Bundled packages. Extensions that ship their own node_modules load those packages, and
createRequire, WebAssembly and SharedArrayBuffer work.
Bundled Swift helpers, like Color Picker's, run normally.
Command modes. view commands appear in the palette. no-view commands run in the background
with the palette closed. A no-view command with an interval can refresh on a schedule; see
Background refresh. menu-bar commands show
native menu items and refresh on their manifest interval, without keeping JavaScript in memory
between runs; see Menu bar commands.
raycast:// links are handled inside Tinycast. Tinycast registers this link type; if Raycast is
also installed, macOS decides which app receives those links. A link to an installed extension command
runs that command, whether it comes from another app, the browser or an extension, with its arguments,
fallbackText, launchType and context applied. tinycast:// links work the same way. A Raycast Store
Install link opens Search extensions on that
extension. Any other link reopens the palette, since passing it on would open Raycast itself.
Not supported yet
| Gap | Why |
|---|---|
AI, BrowserExtension, WindowManagement | These are Raycast services with no local equivalent. Using one fails with a clear message |
| A WebSocket to a server macOS doesn't trust | Certificate checks can't be turned off, so the connection fails |
Canceling a fetch in progress | The caller gets its AbortError, but the request still finishes in the background |
Writing to a running child_process.spawn | Input is sent once, when the command starts. Later writes are dropped |
| Streaming HTTP | Responses arrive all at once, so server-sent events and download progress don't work |
net and tls | Load without errors, but fail when used |
AI tools (tools/) | Not shown |
If an extension needs something that's missing, it tells you when you run it instead of failing silently or showing a broken screen.