Skip to content

IPC Channels Reference

All communication between app windows, the shell renderer, and the main process flows through typed IPC channels. Channels are defined in packages/shared/src/ipc-channels.ts.

ConstantChannel StringDirectionDescription
IPC.AI_CALLai:callApp → MainBlocking AI model call
IPC.AI_STREAMai:streamApp → MainStart a streaming AI call
IPC.AI_STREAM_CHUNKai:stream:chunkMain → AppA chunk of streamed text
IPC.AI_STREAM_ENDai:stream:endMain → AppStream completed
IPC.AI_STREAM_ERRORai:stream:errorMain → AppStream error occurred
IPC.AI_GET_PROVIDERai:getProviderApp → MainGet current provider name
IPC.AI_GET_MODELai:getModelApp → MainGet current model name
IPC.AI_LIST_PROVIDERSai:listProvidersApp → MainList available providers
ConstantChannel StringDirectionDescription
IPC.KEYS_SETkeys:setShell → MainStore an API key in the keychain
IPC.KEYS_GETkeys:getShell → MainGet a masked API key
IPC.KEYS_DELETEkeys:deleteShell → MainRemove an API key
IPC.KEYS_LISTkeys:listShell → MainList providers with stored keys
IPC.KEYS_HASkeys:hasShell → MainCheck if a provider has a key
ConstantChannel StringDirectionDescription
IPC.STORAGE_SETstorage:setApp → MainStore a KV value
IPC.STORAGE_GETstorage:getApp → MainRetrieve a KV value
IPC.STORAGE_DELETEstorage:deleteApp → MainDelete a KV value
IPC.STORAGE_KEYSstorage:keysApp → MainList all KV keys
IPC.STORAGE_CLEARstorage:clearApp → MainClear all KV data
ConstantChannel StringDirectionDescription
IPC.SHELL_GET_APP_INFOshell:getAppInfoApp → MainGet app manifest
IPC.SHELL_GET_VERSIONshell:getVersionApp → MainGet shell version
IPC.SHELL_OPEN_EXTERNALshell:openExternalApp → MainOpen URL in browser
IPC.SHELL_NOTIFYshell:notifyApp → MainShow desktop notification
IPC.SHELL_SET_TITLEshell:setTitleApp → MainSet window title
IPC.SHELL_THEMEshell:themeApp → MainGet current theme

Used internally by the shell renderer to manage app lifecycle.

ConstantChannel StringDirectionDescription
IPC.APP_LISTapp:listShell → MainList installed apps
IPC.APP_LAUNCHapp:launchShell → MainLaunch an installed app
IPC.APP_CLOSEapp:closeShell → MainClose a running app

Used internally by the shell renderer for store operations.

ConstantChannel StringDirectionDescription
IPC.STORE_FETCH_REGISTRYstore:fetchRegistryShell → MainFetch registry.json
IPC.STORE_INSTALL_APPstore:installAppShell → MainInstall an app from registry
IPC.STORE_UNINSTALL_APPstore:uninstallAppShell → MainUninstall an app
ConstantChannel StringDirectionDescription
IPC.DB_RUNdb:runApp → MainExecute a write SQL statement
IPC.DB_QUERYdb:queryApp → MainExecute a SELECT query
IPC.DB_TRANSACTIONdb:transactionApp → MainExecute atomic transaction
ConstantChannel StringDirectionDescription
IPC.DEV_WARNINGdev:warningMain → AppSend dev warning to sideloaded app
IPC.STORE_SIDELOAD_APPstore:sideload-appShell → MainSideload an app from folder
IPC.STORE_UNSIDELOAD_APPstore:unsideload-appShell → MainRemove a sideloaded app
IPC.SHELL_SELECT_FOLDERshell:select-folderShell → MainOpen folder selection dialog
IPC.SIDELOAD_CHANGEDsideload:changedMain → ShellSideloaded app files changed

Used by the publish wizard in the shell renderer.

ConstantChannel StringDirectionDescription
IPC.PUBLISH_SELECT_FOLDERpublish:select-folderShell → MainSelect app folder for publishing
IPC.PUBLISH_READ_FOLDERpublish:read-folderShell → MainRead app folder contents
IPC.PUBLISH_VALIDATEpublish:validateShell → MainValidate app for publishing
IPC.PUBLISH_CREATE_BUNDLEpublish:create-bundleShell → MainCreate ZIP bundle
IPC.PUBLISH_OPEN_PRpublish:open-prShell → MainOpen GitHub PR URL

All channels follow a domain:action pattern:

  • Domain groups related functionality (e.g., ai, storage, shell, db)
  • Action describes the operation (e.g., call, set, getVersion)
  • Sub-events use additional colons (e.g., ai:stream:chunk)