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

@runloop/reflex-workstation

v0.2.0

Published

The Reflex workstation wire protocol: the messages and tool calls a machine speaks to be driven as a workstation by a Reflex agent.

Readme

@runloop/reflex-workstation

The Reflex workstation wire protocol.

A workstation is a machine a Reflex agent can drive: it connects out to Reflex over a WebSocket, advertises the tools it is willing to run, and executes tool calls against a directory you choose. This package is the message and tool-call contract for that connection, as Zod schemas.

@runloop/reflex-cli implements this protocol in its connect command, which is the reference client. Install this package if you are writing your own: a build agent, a container entrypoint, or a workstation embedded in another product.

npm install @runloop/reflex-workstation

What is in it

  • WorkstationClientMessageSchema and WorkstationServerMessageSchema, the two sides of the connection.
  • WorkstationToolName and WORKSTATION_TOOL_PARAM_SCHEMAS, the tools a workstation may expose, with a Zod schema per tool's parameters.
  • Per-tool parameter and result types: RunCommandParams / RunCommandResult, ReadFileParams / ReadFileResult, WriteFileParams / WriteFileResult, ListDirectoryParams / ListDirectoryResult.
  • The limits both sides enforce: DEFAULT_COMMAND_TIMEOUT_MS, MAX_COMMAND_OUTPUT_CHARS, DEFAULT_READ_FILE_BYTES, MAX_READ_FILE_BYTES.
  • WORKSTATION_PROTOCOL_VERSION and WORKSTATION_CONNECT_PATH, which a client needs to open the connection.

Parsing

Parse every inbound frame rather than trusting it. The schemas are the same ones the Reflex server validates against, so a message that fails here would have been rejected anyway:

import {
  WorkstationServerMessageSchema,
  WORKSTATION_PROTOCOL_VERSION,
} from '@runloop/reflex-workstation';

socket.addEventListener('message', (event) => {
  const message = WorkstationServerMessageSchema.parse(JSON.parse(event.data));
  // message is now a discriminated union, narrowed by `type`
});

Handling a tool call means validating its parameters against the schema for that tool:

import { WORKSTATION_TOOL_PARAM_SCHEMAS } from '@runloop/reflex-workstation';

const params = WORKSTATION_TOOL_PARAM_SCHEMAS[call.tool].parse(call.params);

A note on trust

The protocol describes what an agent may ask for, not what you should allow. A workstation runs commands on a real machine, so the client decides which tools to advertise, which directory they apply to, and whether a call needs human approval first. The CLI exposes those as --dir and --ask. Treat every tool call as untrusted input.

Versioning

Semantic versioning, released independently of the other Reflex packages. Below 1.0, a breaking change bumps the minor version. WORKSTATION_PROTOCOL_VERSION tracks the wire format separately from the package version.

License

MIT.