Tinycast
Extensions

What works

What Tinycast supports from the Raycast API, how well it works in practice, and the known gaps.

How well it works

Measured against the 37 extensions installed in a real Raycast on the development Mac:

32 of 37 extensions, and 114 of 147 view commands, open and render.

That number is measured, not estimated. It was taken before sign-in support arrived, so extensions that needed it were not counted yet. Expect it to move up.

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 ready-made variants. Older names still used by published extensions work too.

APIs. Clipboard, LocalStorage, Cache, environment, getPreferenceValues, showToast, showHUD, confirmAlert, closeMainWindow, popToRoot, clearSearchBar, open, trash, showInFinder, getApplications, getDefaultApplication, getFrontmostApplication, getSelectedText, getSelectedFinderItems, launchCommand, updateCommandMetadata, openExtensionPreferences, useNavigation, OAuth, Icon, Color, Image.Mask, Keyboard.Shortcut.Common, LaunchType.

Signing in with OAuth. OAuth.PKCEClient works with all three of Raycast's redirect methods. Tokens are kept in your login Keychain, one set per extension, and removed when you uninstall it.

To catch the redirect, Tinycast registers the raycast:// link type. If Raycast is also installed, macOS picks which app gets those links. A sign-in that never comes back gives up after five minutes.

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. Any other built-in loads fine and only fails if it is actually used.

http and https requests go through the same path as fetch, so libraries like axios and node-fetch work. Streams are the real thing, so pipelines like fetch → file work end to end.

Bundled Swift helpers, like Color Picker's, run.

Command modes. view commands show 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.

raycast:// links stay inside Tinycast. A link to an installed extension command runs that command — from another app or the browser as well as from inside an extension — with its arguments, fallbackText and launchType honored, and tinycast:// works the same way. Anything else reopens the palette. Passing them on would launch Raycast itself.

Not supported yet

GapWhy
menu-bar commandsThe launcher lists them and explains why they do not open
Raycast's sign-in proxyProviders that need oauth.raycast.com to swap tokens still fail
AI, BrowserExtension, WindowManagementRaycast services with nothing local to stand in. Using one fails with a clear reason
WebSocketNot available yet
Cancelling a fetch in flightThe caller gets its AbortError, but the request still finishes in the background
Live child_process.spawn outputThe command runs to the end, then its output arrives in one piece
Streaming HTTPA response arrives all at once, so server-sent events and download progress do not work
net and tlsLoad, but fail when used
AI tools (tools/)Not shown

An extension that needs something missing tells you when you run it, instead of failing silently or showing half a screen.

On this page