AutoCua
macOS·Windows·Linux·브라우저·iOS·Android용 컴퓨터 사용 에이전트(CUA)로 자동화
Talysman은 방해 사이트와 앱을 차단하고 집중을 일찍 끝내려면 다른 방에 둔 USB 키가 필요
Talysman blocks distracting websites and desktop apps. Ending a focus session early requires a physical USB key you left in another room — paired from any USB drive you already own.
생산성TypeScript · RustGitHub @yauneyz온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Talysman is a cross-platform distraction blocker. A thin Electron control panel talks to a separate privileged Rust service that owns focus state and performs OS-level enforcement. A companion browser extension adds request-level blocking for traffic the host network layer cannot identify reliably.
The repository also contains the Next.js account and billing service, Supabase migrations, release automation, and installers for Windows, Linux, and macOS.
The project is pre-1.0 but substantially implemented:
The native backends are not equivalent:
pf, /etc/hosts, and a LaunchDaemon. Network Extension and Endpoint
Security hardening remain future work and require Apple-managed entitlements.This is security-sensitive software and still needs fail-closed/error-path hardening and clean-host platform validation before its enforcement guarantees should be treated as production-ready.
| Path | Purpose |
|---|---|
apps/desktop | Electron main, preload, and React renderer |
apps/web | Next.js website, auth/billing API, Supabase migrations, and web tests |
apps/extension | Browser extension source and store-submission material |
packages/shared | Desktop/native RPC and domain contracts |
packages/core | Pure policy, pairing, property-group, and schedule logic |
packages/product | Plans, entitlements, and feature limits |
packages/billing-server | Shared Stripe/Supabase billing operations |
packages/auth-contracts | Zod schemas and talysman:// deep-link path constants shared by web and desktop |
native/{windows,linux,macos} | Privileged Rust services and support binaries |
native/common | Shared browser/watchdog logic |
scripts | Development, build, release, and infrastructure automation |
See snorlax-architecture.md for the design and trust boundaries.
Prerequisites for the complete stack are Node 22.12 or newer, pnpm 11, Docker, the Supabase CLI,
the Stripe CLI, and an installed/running Talysman privileged service. Copy .credentials.example
to the gitignored .credentials and fill in the local values first.
pnpm install
pnpm dev
pnpm dev generates local env files, starts Supabase, starts Stripe webhook forwarding, and then
launches the web and Electron apps. The development desktop shares the installed privileged
Talysman service with the production desktop, so it gets real USB discovery and its focus changes
reach the existing browser extensions. The attached processes stop on Ctrl+C; Supabase remains up
for fast restarts. The web app listens on all network interfaces at port 3000. On the same LAN as
the development desktop, open http://10.1.10.188:3000 to test it on a physical phone. That address
is static in the desktop NixOS network profile.
pnpm dev:down # stop the local Supabase stack
pnpm dev:desktop # Electron only
pnpm dev:mock # complete stack with the UI-only in-process blocker
pnpm dev:desktop:mock # Electron only with the in-process blocker
pnpm web:dev # web app only
Normal development fails clearly when the installed privileged service is unavailable instead of silently switching to a mock that cannot discover USB drives or reach the browser extensions.
The root and web projects have separate Vitest suites:
pnpm typecheck
pnpm lint
pnpm test
pnpm web:test
pnpm --filter @talysman/web typecheck
pnpm audit:extension
Run native tests per crate:
cargo test --locked --manifest-path native/common/Cargo.toml
cargo test --locked --manifest-path native/linux/Cargo.toml
cargo test --locked --manifest-path native/macos/Cargo.toml
The Windows crate needs the WinDivert SDK/library configuration described in native/windows/README.md and is best built and tested on native Windows.
Production desktop builds require generated production environment values plus the platform's native signing toolchain:
pnpm build:win
pnpm build:linux
pnpm build:mac
pnpm build:extension
Use these runbooks for the details: