ShellRS
ShellRS는 Rust로 작성된 무료 오픈소스 SSH 클라이언트
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기open source coding agent thats good bots
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An open-source AI coding agent for engineers — built as a cross-platform desktop app.
Roxy is an Electron application written in TypeScript with a
React renderer. It ships a full agent harness in the main process: a provider-agnostic
tool-calling loop, per-model tuned system prompts, Plan/Build agents and subagents, disk-backed
context management, and integrations for MCP servers, language-server diagnostics, and SKILL.md
skills.
bash
Install dependencies
npm install
Run in development (hot reload)
npm run devREADME 전문 보기 ↗An open-source AI coding agent for engineers — built as a cross-platform desktop app.
Download: https://roxy.gg
Roxy is an Electron application written in TypeScript with a
React renderer. It ships a full agent harness in the main process: a provider-agnostic
tool-calling loop, per-model tuned system prompts, Plan/Build agents and subagents, disk-backed
context management, and integrations for MCP servers, language-server diagnostics, and SKILL.md
skills.
| Layer | Choice |
|---|---|
| Desktop | Electron 33 |
| Build tool | electron-vite (Vite 5) |
| UI | React 18 + TypeScript |
| Styling | Tailwind CSS v4 |
| Tool-calling | Vercel AI SDK (Anthropic + Google) |
| Integrations | Model Context Protocol SDK |
| Storage | better-sqlite3 |
| Packaging | electron-builder |
| Formatting | Prettier |
roxy/
├── build/ # Packaging resources (icons, entitlements)
├── resources/ # Static assets bundled with the app
│ └── prompts/ # Tuned per-model + agent system prompts (inlined at build via ?raw)
├── src/
│ ├── main/ # Electron main process (Node.js)
│ │ ├── index.ts # App lifecycle, window creation, service startup
│ │ ├── harness/ # The agent loop: agent.ts (loop + tool schemas), tools.ts (dispatch)
│ │ ├── services/ # llm.ts, aisdk.ts, mcp.ts, lsp.ts, skills.ts, browser.ts, automation.ts, …
│ │ ├── db/ # better-sqlite3 store: schema, migrations, repo
│ │ └── ipc/ # ipcMain handlers wiring the renderer to the harness/services
│ ├── preload/ # Secure bridge between main and renderer (window.api)
│ ├── renderer/ # React app (Chromium): routes, components, store
│ └── shared/ # Pure, cross-process modules: tools, agents, prompt/prompt-text,
│ # providers, context, tool-history, mcp, lsp, skills, web, types
├── test/ # smoke.ts (Electron) + shared.ts (pure Node) validation suites
├── electron.vite.config.ts # Main / preload / renderer build config
└── electron-builder.yml # Distribution config
Native dependency builds require Python 3.11 (electron-builder's node-gyp 9
still uses distutils) and a platform C/C++ toolchain: Visual Studio C++ Build
Tools on Windows, Xcode Command Line Tools on macOS, or build-essential on
Debian/Ubuntu. If multiple Python versions are installed, set
npm_config_python to the Python 3.11 executable before installing.
On Debian/Ubuntu, also install the input-hook development libraries:
sudo apt-get install libx11-dev libxtst-dev libxrandr-dev libxt-dev
# Install dependencies
npm install
# Run in development (hot reload)
npm run dev
| Script | Description |
|---|---|
npm run dev | Start the app with hot reload |
npm run build | Type-check and build for production |
npm run typecheck | Type-check main, preload, and renderer |
npm run smoke | Run the shared (Node) + app (Electron) suites |
npm run format | Format the codebase with Prettier |
npm run build:win | Build a Windows installer |
npm run build:mac | Build a macOS app |
npm run build:linux | Build Linux packages (AppImage, deb) |
nodeIntegration is off. The renderer talks to the main
process only through the typed window.api bridge defined in src/preload.src/main/ipc. Add a new renderer-facing capability
by registering an ipcMain.handle(...) there and exposing a matching method in the preload bridge.The main process runs a single provider-agnostic agent loop; the renderer only streams events.
src/main/harness/agent.ts owns the turn loop, the
tool JSON-schemas (BASE_SCHEMAS), context trimming, and subagent dispatch.
tools.ts is the authoritative runTool dispatcher. The user-facing
catalog in src/shared/tools.ts mirrors it (the "Skills & Tools" page) and
is guarded against drift by the shared smoke suite.services/llm.ts; Anthropic + Google route through the Vercel
AI SDK in services/aisdk.ts so every family gets tool-calling.src/shared/prompt.ts and inlined from resources/prompts/*.txt via ?raw
in prompt-text.ts. Plan/Build agents + subagents are defined in
src/shared/agents.ts; an agent's tools allowlist and promptFile are
what make Plan genuinely read-only.src/shared/context.ts); large tool outputs spill to disk with a preview
pointer (); older turns are
summarized by .Take a running session to your phone. Remote Workspace (bottom-left CUSTOMIZE group in the sidebar) mints a room on roxy.gg, shows a QR + safe URL + PIN, and keeps the desktop as the authoritative host while a phone drives it as a thin client — your code and files never leave the machine; only the chat transcript and streamed agent events are relayed.
main/services/remote.ts mints via
POST https://roxy.gg/api/remote/sessions, holds the host token, and keeps a host WebSocket
alive (auto-reconnect w/ backoff). On a guest hello it sends a transcript snapshot; on a guest
prompt it persists the message and runs the turn, fanning every LlmEvent to the phone and
the local renderer. Stop sharing revokes the room (host-token DELETE).llm:start IPC path and a remote prompt call the shared
main/services/session-turn.ts runSessionTurn, so a phone
prompt behaves identically to a local one.remote:start | remote:stop | remote:status + a remote:state push
(src/shared/ipc.ts), handlers in
src/main/ipc, bridge in src/preload, types in
src/shared/api.ts. The QR popup is
renderer/src/components/RemoteWorkspaceDialog.tsx
(offline QR via qrcode.react — nothing leaves the machine).Roxy ships in English, 简体中文, हिन्दी, Español, العربية, Français, Português, Русский, Deutsch, and 日本語. Native speakers can help make the interface clearer and more natural. Issues and pull-request descriptions are welcome in any of these languages.
src/renderer/src/locales/default.json.src/renderer/src/locales.npm run i18n to validate catalog structure, placeholders, and inline markup.MIT © Roxy.
Roxy is a fork of opencode (also MIT) and
retains opencode's copyright alongside Roxy's own. See LICENSE and
resources/prompts/ATTRIBUTION.txt for
details.
services/tool-output-store.tsservices/mcp.ts), language-server diagnostics fed back after edits
(services/lsp.ts), and on-demand SKILL.md skills
(services/skills.ts). Roxy's own differentiators — the persistent
browser toolset (services/browser.ts) and persistent bots
(services/automation.ts) run through the same harness.