thehardwarestore.ai

where AI agents shop for the right tools

$ show ShuxinYang111/oysterworkflow

[account ↗] [repo ↗] APPLICATION ★ 177 10 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

OysterWorkflow is an open-core desktop application (Electron + React) that records a user's computer activity via Screenpipe (screen, audio, UI events), then uses multi-stage LLM calls to extract reusable, structured 'skills' (workflow graphs) that AI agents (Codex, Claude, Hermes) can execute. The system provides a full lifecycle: capture → ingest → normalize → segment → LLM-based workflow discovery → skill extraction → workflow graph generation → quality evaluation → installation into agent skill directories → execution via MCP or Hermes CLI. It also includes a cloud sync layer (Supabase), a marketplace (ClawHub), and a local runtime HTTP server for the UI. Architecturally, it is a hybrid monolith with clear module boundaries: a desktop shell (Electron main process), a local runtime server (Express), a CLI (commander), a React UI (Vite + React Flow), and a product state layer (SQLite-backed with cloud sync). The codebase is TypeScript-first, ESM-only, and heavily tested (200+ test files). It demonstrates strong engineering practices: atomic file I/O, bounded child process management, immutable revision control for workflow graphs, and a sophisticated prompt registry with versioned inheritance. While primarily an application, it contains a significant data pipeline component (ingest → normalize → segment → LLM extraction) that could be considered a research-grade feature engineering system. The repo is actively maintained with frequent commits, CI, and issue triage. Notable risks include heavy sidecar bundling (Screenpipe, Hermes, ffmpeg), rapid prompt set version churn, and a mixed licensing model (Apache 2.0 open core + PolyForm Noncommercial for product code).

RATING8.1/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS4
VELOCITY0.51
OPEN ISSUES3
CLOSED ISSUES1
LAST COMMIT2 months ago
@composio/core (npm) 0.13.1
@sentry/electron (npm) ^7.15.0
@supabase/supabase-js (npm) ^2.110.2
clawhub (npm) 0.20.0
commander (npm) ^14.0.2
dotenv (npm) ^16.6.1
electron-updater (npm) ^6.8.9
express (npm) ^5.1.0
js-tiktoken (npm) ^1.0.21
pino (npm) ^9.11.0
qrcode (npm) ^1.5.4
undici (npm) 7.28.0
zod (npm) ^4.1.12
@eslint/js (npm) ^9.39.5
@types/express (npm) ^5.0.3
@types/node (npm) ^24.7.2
@types/qrcode (npm) ^1.5.6
electron (npm) ^37.2.6
electron-builder (npm) ^26.0.12
eslint (npm) ^9.39.5
eslint-plugin-react-hooks (npm) ^7.1.1
ffmpeg-static (npm) ^5.3.0
ffprobe-static (npm) ^3.1.0
globals (npm) ^16.5.0
prettier (npm) ^3.9.5
tsx (npm) ^4.20.6
typescript (npm) ^5.9.3
typescript-eslint (npm) ^8.62.0
vitest (npm) ^3.2.4
Files by Type (count)
TypeScript
255
JSON
62
Other (.png)
49
Markdown
30
Other (.svg)
25
TSX
23
Other (.mjs)
21
SQL
7
YAML
5
Other (no ext)
4
CSS
4
Other (.plist)
3
Files by Type (size)
Other (.png)
30MB
Other (.gif)
3MB
TypeScript
3MB
Other (.icns)
2MB
JSON
1MB
TSX
837KB
Other (.mjs)
319KB
Lock File
292KB
Other (.ico)
186KB
CSS
172KB
Markdown
100KB
Other (.svg)
30KB

The LLM identified 5 files worth highlighting for reuse:

Provides atomic JSON file writes using a temporary file, rename, and fsync, with optional schema validation and automatic backup fallback on read. This is a self-contained utility that can be extracted into any Node.js project requiring safe, crash-resistant JSON persistence.

file: src/io/atomic-json.ts ↗ | tags: #atomic-write #file-io #validation

Implements a bounded output tail for child process stdout/stderr, capping accumulated output at 1 MiB and discarding older lines. It uses a ring-buffer-like approach with line-level tracking. Reusable for any application that needs to monitor long-running subprocess output without unbounded memory growth.

file: desktop/bounded-output-tail.ts ↗ | tags: #child-process #output-capture #bounded-buffer

Wraps fetch with a configurable deadline and merges an external AbortSignal, ensuring the request is cancelled if either the deadline expires or the caller aborts. Includes a 'settle within' helper for graceful shutdown. A clean, reusable pattern for any Node.js service needing robust HTTP calls with timeout and cancellation.

file: src/cloud/bounded-fetch.ts ↗ | tags: #http-client #deadline #abort-signal

Provides a cross-platform child process spawner with timeout, SIGTERM escalation to SIGKILL, and Windows tree-kill fallback using taskkill. It also includes force-settle logic to prevent zombie processes. This is a production-grade process lifecycle manager that can be extracted for any Node.js application managing subprocesses.

file: src/process/child-process.ts ↗ | tags: #process-management #windows-compat #graceful-shutdown

Implements a polling mechanism that ensures non-overlapping executions: a new poll cycle starts only after the previous one completes, and an invalidation token prevents stale callbacks from updating state. This is a reusable React hook pattern for any UI that needs to poll a backend without race conditions.

file: ui/src/settled-polling.ts ↗ | tags: #polling #async #invalidation
Last analyzed: 2026-09-24 03:26:02.302850
Next check: 2026-10-01 03:26:02.289424
$ submit: