ShellRS
ShellRS는 Rust로 작성된 무료 오픈소스 SSH 클라이언트
취미 CNC 라우터용 무료 오픈소스 CAM, 다양한 파일 임포트·가공·G-code 출력 지원
Free, open source CAM for hobby CNC routers. Import SVG, DXF, STL or STEP, set up profile, pocket, drill, engrave, V-carve and 3D relief operations, and export G-code for GRBL, grblHAL and FluidNC.
개발 도구TypeScript · G-codeGitHub @federicovezzoli온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
An open source 2.5D CAM completely web based
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Open source, web-based 2.5D CAM. Turn 2D vector designs into G-code for CNC routers, right in your browser.
Try it at app.furrow.cam: no account needed, projects stay in your browser until you sign up. See the releases for what changed.
Furrow CAM also runs as a desktop app for macOS, Windows and Linux. It works offline with no account, and saves projects as .furrow files on your computer, versions included. A .furrow file also opens in the web app (Import), and a web export opens in the desktop app.
Download the newest version:
| System | Download |
|---|---|
| macOS, Apple Silicon (M1 and later) | download.furrow.cam/mac-arm64 (.dmg) |
| macOS, Intel | download.furrow.cam/mac-x64 (.dmg) |
| Windows | download.furrow.cam/win (.exe) |
| Linux | download.furrow.cam/linux-appimage (.AppImage), download.furrow.cam/linux-deb (.deb) for Debian and Ubuntu, or download.furrow.cam/linux-pacman (.pacman) for Arch |
Older versions are on the desktop releases page.
The installers aren't code-signed, so your system warns you the first time you open the app:
xattr -dr com.apple.quarantine "/Applications/Furrow CAM.app" in Terminal.chmod +x furrow-cam-*.AppImage) and run it, or install the .deb with sudo apt install ./furrow-cam-*.deb, or the .pacman package on Arch with sudo pacman -U furrow-cam-*.pacman. On Arch, the AppImage needs fuse2.On Windows and Linux the app offers to download and install a new version itself. On macOS it tells you about it and links to the release: download it from the links above. Projects saved by a newer version may not open in an older one.
Furrow CAM is a Computer-Aided Manufacturing tool for 2.5D machining: operations where the tool moves in X/Y at a series of fixed Z depths. That covers most hobby and small-shop CNC router work:
It is not a full 3D CAM (relief only: no undercuts, 4th axis or tool tilting), and it is not a CAD tool. You design elsewhere, import here.
.furrow projects, with each change showing live in the desktop app (Help → Set Up AI Assistants…)| Folder | Contents |
|---|---|
| docs/prd/ | Product Requirements Documents: what we build and why |
| docs/adr/ | Architecture Decision Records: how we build it and the reasoning behind each choice |
| apps/mcp/ | The MCP server: setting up an AI assistant to work on your projects |
Requirements: Node.js 24 (see .nvmrc), pnpm 11 (corepack enable) and Docker.
pnpm install
cp apps/web/.env.example apps/web/.env # then set BETTER_AUTH_SECRET (openssl rand -base64 32)
pnpm db:up # start local PostgreSQL (docker compose)
pnpm db:migrate # apply database migrations
pnpm dev # start the web app at http://localhost:3000
Without RESEND_API_KEY, verification and password reset emails are printed to the dev server console.
Other commands:
pnpm email:dev # preview the email templates
pnpm test # unit tests (Vitest)
pnpm typecheck # TypeScript across all packages
pnpm check # lint + format check (Biome); pnpm check:fix to apply fixes
pnpm build # production build
pnpm db:studio # browse the database (Prisma Studio)
pnpm demos # record the website demo videos (needs ffmpeg)
The web app deploys to Vercel with Neon PostgreSQL (ADR-0005). Set the project's root directory to apps/web and configure the variables listed in apps/web/.env.example. Vercel runs the vercel-build script, which generates the Prisma client (prisma generate) and applies pending migrations (prisma migrate deploy) before building, so the build does not depend on install scripts running on a cached install. With storage configured, set CRON_SECRET too: apps/web/vercel.json schedules a monthly sweep (/api/cron/sweep-assets) that deletes abandoned and orphaned uploads. Other hosts can call that route with Authorization: Bearer <CRON_SECRET>.
apps/web/ Next.js app: routes, accounts, server code (organised by feature, ADR-0021)
apps/desktop/ Electron desktop app (ADR-0044)
apps/download/ Cloudflare Worker behind download.furrow.cam (ADR-0049)
apps/mcp/ local MCP server for AI assistants, published to npm as @furrow-cam/mcp (ADR-0067)
apps/demos/ Playwright scripts that record the website demo videos (ADR-0075)
packages/workspace/ the CAM workspace UI shared by web and desktop
packages/ui/ shadcn/ui components
packages/document/ project document schema (Zod), migrations and machine presets
packages/cam-core/ framework-agnostic geometry and toolpath generation
packages/post/ post-processors (toolpaths → G-code)
docs/ PRDs and ADRs
See ADR-0011 for the reasoning and the rules between packages.
The most useful contributions right now:
packages/document/src/presets/machine-presets.ts, with a source for every value.Work is tracked in GitHub issues, grouped into the MVP and Post-MVP milestones. For code changes:
dev as <type>/issue-<number> (feat, fix or chore), e.g. feat/issue-9.dev (the default branch) with Closes #<number> and a changeset (pnpm changeset) if the change affects behaviour.dev into main; see ADR-0012.MIT © 2026 Federico Vezzoli