DeepSeek Harness Remote
DeepSeek Harness Remote: DeepSeek Harness 실행 PC와 모바일·PC를 안전하게 연결해 어디서나 작업 이어받기
파일을 애니메이션 색코드로 표시해 다른 기기의 카메라로 전송합니다. 네트워크·페어링·계정 없이 웹·데스크톱 무료, 오픈 프로토콜 MIT 라이선스
Show a file as an animated colour code and receive it with another device’s camera. No network, pairing or account. Free web and desktop versions; open protocol, MIT-licensed.
생산성Rust · JavaScriptGitHub @mondaylabsltd온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기High-throughput screen-to-camera file transfer.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗High-throughput file transfer from a screen to a camera. The sender plays a file as an animated grid of coloured cells; the receiver films it and rebuilds the file. No network, no pairing, no return channel.
中文说明 · Developer guides · Protocol (English, STE) · 协议(中文) · Test vectors · Rust crate
Animated QR codes are easy to make but slow: one QR version 25 frame holds about 1.2 KB, and the square shape leaves most of a phone or monitor screen unused. Lumen Code is used the same way, by pointing a camera at a screen, and carries more per frame:
| Animated QR (v25, typical) | Lumen Code v1 | |
|---|---|---|
| Bits per cell | 1 | 2 (C4, default) or 3 (C8) |
| Shape | square | fills the screen (adaptive width and height, aspect up to 2.4) |
| Cell size | fixed by version | chosen from the physical screen size |
| Data per frame, phone screen | ~1.2 KB | ~2.2 KB (C4) / ~3.4 KB (C8) |
| Data per frame, 13" laptop | ~1.2 KB | ~6.9 KB (C4) / ~10.3 KB (C8) |
| Lost frames | usually repeated cyclically | fountain code: every frame is new data |
| One corner hidden by glare | frame lost | decodes from the other three corners |
At the default 12 frames per second, a laptop screen sends roughly 80–125 KB/s of raw capacity. The rate a receiver actually gets depends on its camera, and the receiver page shows it live. Performance breaks the speed down item by item.
Online: https://lumencode.link. Open Send on the sending screen and choose a file, then open Receive on the receiving phone. Both pages work on phones and desktops. Nothing is installed, and the file never leaves the two devices.
Photosensitivity warning: while sending, the code flashes and changes colour up to 60 times a second. People who are sensitive to flashing light should not look at it. The web pages and the native apps show this warning before a code plays.
JS | WASM), which produce bit-identical frames. The receiver uses WASM by default; switching during a scan keeps the progress.To run the web app yourself (SvelteKit, in src/website):
cd src/website && bun install
bun run dev # http://localhost:5173 (the camera works on localhost)
bun run dev:https # https://<lan-ip>:5173 for phones (self-signed certificate)
bun run build # prerendered pages and a Cloudflare Worker in .svelte-kit/cloudflare
The native apps do the same transfer on one shared Rust core (src/app: app logic, scan pipeline and the protocol crate). Each platform shell only draws the UI and calls the platform. The apps look and behave like the web pages, and add what native code allows: camera planes read in place, capture at up to 120 fps on iPhone and 60 fps on Android, following the sender's rate, the app's own exposure control on Android, frame timing locked to 120 Hz screens, haptics, screen brightness, and less work when the phone gets hot.
| App | Shell | Build and run | Guide |
|---|---|---|---|
| iOS 17+ | SwiftUI | src/ios/scripts/run.sh | src/ios |
| Android 10+ | Jetpack Compose | cd src/android && ./gradlew :app:installDebug | src/android |
| macOS, Windows, Linux | GPUI | cd src/desktop && cargo run --release | src/desktop |
Desktop builds are on the Releases page: a signed and notarized macOS image, and Windows and Linux archives. The desktop app is tested on macOS. The Windows and Linux builds, webcam included, are new and have not yet been tried on real machines.
The iPhone and Android apps are coming to the App Store and Google Play at US$2.99, paid once (no subscription, no in-app purchases, no ads). The web version and the desktop builds stay free, and anyone can build every app from this repository for free.
There is no package to install: take the code from this repository, pinned to a tag or a commit. A coding agent can follow the steps below as written.
| You build | Take | Then read |
|---|---|---|
| A web page or a Node program | the folder src/core/ — ES modules, no build step, no dependencies. For the faster engine add dist/wasm/lumen.wasm; src/core/wasm-engine.js loads it | Integration guide §3.2–§3.3 |
| A Rust program | lumen-code = { git = "https://github.com/mondaylabsltd/lumen-code" } in Cargo.toml; the library is lumen (no dependencies) | src/rust/README.md |
| An app in another language (Swift, Kotlin, C, …) | the C ABI of the same crate: src/rust/include/lumen.h, built with --features ffi | Integration guide §3.5 |
| A new implementation | the specification and test/vectors/test-vectors.json | Integration guide §3.7 |
Every integration must follow these rules (specification §10.4, §11, §13):
The developer guides explain this with figures and numbers. The full, normative description is docs/PROTOCOL.md.
docs/PROTOCOL.md, *.zh-CN.md protocol specification (English STE / Chinese)
docs/guide/ developer guides (how it works, scanner, integration, performance, dashboard)
src/core/ JavaScript reference implementation (protocol library, ES modules)
src/website/ the web app (SvelteKit): home, sender, receiver, in English and Chinese
src/rust/ Rust reference implementation (zero dependencies, C ABI, WASM)
src/app/ shared core of the native apps (app logic, scan pipeline, uniffi bindings)
src/ios/ src/android/ src/desktop/ native shells (SwiftUI, Jetpack Compose, GPUI)
src/web/, dist/ the previous static site (still deployed until the switch to src/website); dist/wasm/lumen.wasm is the WASM engine
src/tools/ WASM build, the previous site's build and dev server, figure and link-preview generators
test/ Node tests, camera simulator, robustness suites
test/vectors/test-vectors.json conformance vectors (generated by test/vectors.js)
npm test # conformance vectors, fuzz/property tests, core, packets/blocks, end-to-end through a camera model, JS<->WASM
npm run test:fuzz # the fuzz/property tests with 20 times more cases
npm run test:robustness # perspective, rotation, mirroring, blur, bloom, moiré, motion, exposure
cd src/rust && cargo test --release # the same vectors, differential tests against JS, fuzz/property tests, decoding of JS-simulated frames
cd src/app && cargo test --release # native app core: app logic, camera pipeline, rolling-shutter simulation
node test/bench.js; cd src/rust && cargo run --release --example measure -- bench # throughput of each stage
cd src/website && bun run test:e2e # the web app in Chromium: a recorded transfer as its webcam, both engines, both languages
The camera simulator (test/camera.js) models perspective, barrel distortion, optical blur, colour crosstalk, white balance, vignetting, bloom, moiré, motion blur, 4:2:0 chroma subsampling and noise. In a randomised "hand-held, badly aimed" batch in 4-colour mode, about 27–28 of 30 frames and 86–89 % of all codewords decode. The frames that fail have about 3 camera pixels per cell plus heavy blur.
| Scanner | Phone-size code | Laptop-size code |
|---|---|---|
| JavaScript (V8) | 14–16 ms | 41–45 ms |
| Rust → WebAssembly | 9–10 ms | 21 ms |
| Rust native | 7–9 ms | 16 ms |
The receiver also skips frames it has already decoded (it reads only the header, about 8 ms in JS), locks its scan rate to the sender's frame rate (about 1.6 scans per sender frame instead of one per camera frame), and has the GPU crop and scale only the region around the code to about 6 pixels per cell before a worker sees it. Panels over the video use no background blur, and the camera turns off when a transfer completes. Together these cut the work several times over and keep phones cool.
tj.appsdata.org, see the privacy policy) from src/website/src/app.html. Remove it there, and from the CSP in src/website/vite.config.ts, if you host your own copy.