Skip to content

railwise-cn/railwise-desktop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,312 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Discord

RAILWISE

RAILWISE helps you run your agents, skills, and MCP. It's an open-source alternative to Claude Cowork/Codex (desktop app).

Core Philosophy

  • Local-first, cloud-ready: RAILWISE runs on your machine in one click. Send a message instantly.
  • Composable: desktop app, WhatsApp/Slack/Telegram connector, or server. Use what fits, no lock-in.
  • Ejectable: RAILWISE is powered by OpenCode, so everything OpenCode can do works in RAILWISE, even without a UI yet.
  • Sharing is caring: start solo, then share. One CLI or desktop command spins up an instantly shareable instance.

RAILWISE demo

RAILWISE is designed around the idea that you can easily ship your agentic workflows as a repeatable, productized process.

Alternate UIs

  • OpenCode Router (WhatsApp bot): a lightweight WhatsApp bridge for a running OpenCode server. Install with:
  • RAILWISE Orchestrator (CLI host): run OpenCode + RAILWISE server without the desktop UI.

Quick start

Download the dmg here https://github.com/different-ai/openwork/releases (or install from source below)

Why

Current CLI and GUIs for opencode are anchored around developers. That means a focus on file diffs, tool names, and hard to extend capabilities without relying on exposing some form of cli.

RAILWISE is designed to be:

  • Extensible: skill and opencode plugins are installable modules.
  • Auditable: show what happened, when, and why.
  • Permissioned: access to privileged flows.
  • Local/Remote: RAILWISE works locally as well as can connect to remote servers.

What’s Included

  • Host mode: runs opencode locally on your computer
  • Client mode: connect to an existing OpenCode server by URL.
  • Sessions: create/select sessions and send prompts.
  • Live streaming: SSE /event subscription for realtime updates.
  • Execution plan: render OpenCode todos as a timeline.
  • Permissions: surface permission requests and reply (allow once / always / deny).
  • Templates: save and re-run common workflows (stored locally).
  • Skills manager:
    • list installed .opencode/skills folders
    • install from OpenPackage (opkg install ...)
    • import a local skill folder into .opencode/skills/<skill-name>

Skill Manager

image

Works on local computer or servers

Screenshot 2026-01-13 at 7 05 16 PM

Quick Start

Requirements

  • Node.js + pnpm
  • Rust toolchain (for Tauri): install via curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Tauri CLI: cargo install tauri-cli
  • OpenCode CLI installed and available on PATH: opencode

Install

pnpm install

RAILWISE now lives in packages/app (UI) and packages/desktop (desktop shell).

Run (Desktop)

pnpm dev

Run (Web UI only)

pnpm dev:ui

Arch Users:

yay -s opencode # Releases version

Architecture (high-level)

  • In Host mode, RAILWISE runs a local host stack and connects the UI to it.
    • Default runtime: openwork (installed from openwork-orchestrator), which orchestrates opencode, openwork-server, and optionally opencode-router.
    • Fallback runtime: direct, where the desktop app spawns opencode serve --hostname 127.0.0.1 --port <free-port> directly.

When you select a project folder, RAILWISE runs the host stack locally using that folder and connects the desktop UI. This lets you run agentic workflows, send prompts, and see progress entirely on your machine without a remote server.

  • The UI uses @opencode-ai/sdk/v2/client to:
    • connect to the server
    • list/create sessions
    • send prompts
    • subscribe to SSE events(Server-Sent Events are used to stream real-time updates from the server to the UI.)
    • read todos and permission requests

Folder Picker

The folder picker uses the Tauri dialog plugin. Capability permissions are defined in:

  • packages/desktop/src-tauri/capabilities/default.json

OpenPackage Notes

If opkg is not installed globally, RAILWISE falls back to:

pnpm dlx opkg install <package>

OpenCode Plugins

Plugins are the native way to extend OpenCode. RAILWISE now manages them from the Skills tab by reading and writing opencode.json.

  • Project scope: <workspace>/opencode.json
  • Global scope: ~/.config/opencode/opencode.json (or $XDG_CONFIG_HOME/opencode/opencode.json)

You can still edit opencode.json manually; RAILWISE uses the same format as the OpenCode CLI:

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["opencode-wakatime"]
}

Useful Commands

pnpm dev
pnpm dev:ui
pnpm typecheck
pnpm build
pnpm build:ui
pnpm test:e2e

Troubleshooting

Linux / Wayland (Hyprland)

If RAILWISE crashes on launch with WebKitGTK errors like Failed to create GBM buffer, disable dmabuf or compositing before launch. Try one of the following environment flags.

WEBKIT_DISABLE_DMABUF_RENDERER=1 openwork
WEBKIT_DISABLE_COMPOSITING_MODE=1 openwork

Security Notes

  • RAILWISE hides model reasoning and sensitive tool metadata by default.
  • Host mode binds to 127.0.0.1 by default.

Contributing

  • Review AGENTS.md plus VISION.md, PRINCIPLES.md, PRODUCT.md, and ARCHITECTURE.md to understand the product goals before making changes.
  • Ensure Node.js, pnpm, the Rust toolchain, and opencode are installed before working inside the repo.
  • Run pnpm install once per checkout, then verify your change with pnpm typecheck plus pnpm test:e2e (or the targeted subset of scripts) before opening a PR.
  • Add new PRDs to packages/app/pr/<name>.md following the .opencode/skills/prd-conventions/SKILL.md conventions described in AGENTS.md.

For Teams & Businesses

Interested in using RAILWISE in your organization? We'd love to hear from you — reach out at benjamin.shafii@gmail.com to chat about your use case.

License

MIT — see LICENSE.

About

RAILWISE Desktop — 基于 OpenWork 的工程AI桌面工作台

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors