npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

cicy-desktop

v2.1.278

Published

CiCy - AI-powered operating system browser

Readme

CiCy Desktop

CiCy Desktop is an Electron-based desktop automation worker with a small cluster control plane. It exposes ~100+ system tools — Chrome/CDP control, in-page JavaScript, screenshots, clipboard, file ops, shell/node/python exec, system info — over MCP and HTTP, plus a homepage UI for managing local and remote teams. The cicy-code sidecar daemon is acquired at runtime (npx cicy-code on mac/linux, Docker-in-WSL on Windows), not bundled.

Screenshots

The homepage — your teams (the local sidecar, private-cloud teams, and custom remote nodes), each a card you open as a tab:

CiCy Desktop homepage — team list

A team opened as a tab — the agent roster on the left, a live conversation on the right:

CiCy Desktop team workspace

CLI — cicy-desktop

cicy-desktop launches the Electron app — npm start and npx cicy-desktop run the same entrypoint. Self-update with cicy-desktop --update; --version and --help print info.

Run (end users, no clone)

First run launches the Electron app and drops a desktop shortcut (Windows .lnk / macOS .app / Linux .desktop, all with the CiCy icon); double-click it afterwards.

CN needs the electron mirror. A fresh machine has no cached electron binary, so electron's postinstall would otherwise hit GitHub releases and fail — point ELECTRON_MIRROR and the npm registry at npmmirror.

Windows — global install (not npx)

npx's libnpmexec lock false-positives as "Lock compromised" on Windows boxes with realtime antivirus (Defender touches node_modules mtimes mid-install). npm i -g has no such lock:

cmd /c "set ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/&& npm i -g cicy-desktop --registry=https://registry.npmmirror.com&& cicy-desktop"

Re-run the same line to update.

macOS / Linux — npx

ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ npm_config_registry=https://registry.npmmirror.com npx -y cicy-desktop

Outside CN (or once electron is cached) a plain npx -y cicy-desktop is enough.

Develop

git clone [email protected]:cicy-ai/cicy-desktop.git
cd cicy-desktop
npm install
npm start

Config lives in ~/cicy-ai/global.json (API token, gateway key, node list). The worker reads its Authorization: Bearer <token> from there.

Homepage UI (workers/render)

The desktop homepage — team cards, tabs, everything the user sees — is a Vite + React app in workers/render/. The Electron main process loads a prebuilt snapshot from src/backends/homepage-react/ (a file:// SPA: works offline, no mixed-content issues embedding the team webview). Source and snapshot are two different things — scripts/build-homepage.cjs (run on every build:* / publish) rebuilds the snapshot so it never lags behind workers/render/.

Build → ship the snapshot:

cd workers/render && npm run build
rsync -av --delete dist/ ../../src/backends/homepage-react/

Fast dev loop (React/CSS HMR, no Electron restart): run Vite and source-mode Electron with CICY_HOMEPAGE_URL=http://localhost:8173 set (via .env.dev). src/backends/homepage-window.js falls back to the bundled file:// SPA if that URL is unreachable, so the window never stays blank. Full platform/loop details (Mac fast loop, Windows packaged, the three reload classes) are in the worker's CLAUDE.md.

Calling tools

The worker dispatches its tools three ways:

  • In-page (IPC): window.electronRPC(toolName, args) — the bridge injected into trusted BrowserWindows.
  • HTTP (REST): POST /rpc/:toolName with Authorization: Bearer <token> — served by the master, which forwards to the selected worker. 401 Unauthorized means the token is wrong or missing.
  • From an agent: the agent-desktop / agent-electron / agent-chrome skills drive a connected client over WebSocket (agent-desktop rpc <tool>, agent-desktop exec …, etc.).

Discover tools at runtime:

  • list_tools meta-tool (electronRPC("list_tools") / agent-desktop rpc list_tools)
  • GET /openapi.json (browsable at /docs)

The worker exposes automation for: browser window lifecycle and navigation, CDP page interaction, in-page JavaScript, screenshots / downloads / clipboard, system window control and system info, and worker/master cluster coordination.

Architecture

  • worker/server entry — src/main.js
  • desktop lifecycle CLI — bin/cicy-desktop
  • tool implementations — src/tools/*
  • master (routes POST /rpc/:toolName to workers) — src/master/master-routes.js
  • homepage source — workers/render/ → built into src/backends/homepage-react/

The worker dispatches tools in-process via ipcMain.handle("rpc", …) (what window.electronRPC rides) and over HTTP; the live tool index is GET /openapi.json. The desktop CLI starts a local master + worker cluster and manages status/logs.

License

Apache-2.0.