DeepSeek Harness Remote
DeepSeek Harness Remote: DeepSeek Harness 실행 PC와 모바일·PC를 안전하게 연결해 어디서나 작업 이어받기
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A Yocto-built Linux desktop OS where DuDuClaw AI agents and people share one x86-64 machine: A/B updates with rollback, 10 coding CLIs built in, offline llama.cpp. Pre-GA, tested in QEMU.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗繁體中文 · English
DuDuClaw OS is a Yocto-built Linux operating system in which the AI agent is a native resident: it turns an x86-64 box into a machine for DuDuClaw AI employees. It has a desktop of its own (an in-house Wayland compositor and shell, a lock screen, a first-run wizard, Cmd+K to hand work to the agent from anywhere), so a person and the AI share one machine without getting in each other's way: the agent's GUI work runs in a shadow workspace by default, and the moment you touch the keyboard or mouse, whatever it was driving on your desktop yields. The dashboard is served by the gateway, so the box is operable from a browser on the LAN with or without a screen.
Desktop edition home screen (captured on v0.2.0; not yet re-shot for v0.3.0 or v0.4.0).
This repo is the base-OS line: the meta-duduclaw/ Yocto layer (distro policy, machine configs, recipes for the duduclaw-* binaries) plus the scripts/release-os.sh build / sign / publish pipeline. The DuDuClaw platform's Rust workspace lives in its own repo and is vendored here as a trimmed snapshot.
Status: bring-up (0.4.0, pre-GA, embedding platform v1.73.4). The image boots and updates A/B with rollback; the trust chain is wired in the layer but, as of v0.4.0, published images still do not enable signing / verity / TPM (see Trust chain). This is not a general-availability release: the
0.xline tracks bring-up,1.0.0will mark the first GA. All verification so far is under QEMU; the image has not yet been booted on real x86-64 hardware.
New in v0.4.0 (2026-10-16): the gateway no longer runs as root. It runs as the duduclaw account (uid 1000), and the desktop edition's containers (task sandbox, script sandbox, computer use, discovery) run on rootless Podman instead of root Docker; if the engine does not enforce resource limits, those features turn themselves off. duduclaw-sysd, the only root helper, accepts requests only from the gateway's main process and verifies OS updates itself before installing them. SSH is off by default and opens only through the dashboard's maintenance mode, and the base edition now has the same default-deny firewall as the desktop edition. Factory reset wipes data at the next boot, before any service starts. The upgrade is one-way: once a v0.4.0 image has booted successfully, the device cannot go back to v0.3.0 or earlier. No account can log in over SSH yet, so maintenance-mode SSH only controls the port. Full list: CHANGELOG, section 0.4.0.
Installing Linux yourself and then duduclaw on top works fine. Putting that box behind a counter, or handing it to a customer with no engineer, means you also own updates, rollback, tamper resistance, and first-time setup. DuDuClaw OS builds those into the image:
| Need | Your own Linux + duduclaw | DuDuClaw OS |
|---|---|---|
| First-time setup | SSH in and edit config | Auto-provisioned on first boot; the dashboard appears on the LAN |
| System updates | Package manager; you fix failures | A/B dual-slot atomic update, automatic rollback on boot failure |
| Tamper resistance | Roll your own | Read-only root (desktop edition default); dm-verity block verification wired, enabled by a build overlay (still not enabled as of v0.4.0) |
| Boot trust | Secure Boot usually turned off | Self-signed Secure Boot, a dual-signed UKI per slot, first-boot key enrollment — wired, enabled by a build overlay (images remain unsigned through v0.4.0; boot with Secure Boot off) |
| Disk keys | Manual LUKS | TPM2 PCR 7+11 sealing (build overlay option, partial, still not enabled as of v0.4.0) |
| Desktop and apps | Install one by one | Own compositor/shell, Flatpak offline repo (Chromium and LibreOffice install from the Launcher with no network), Chinese IME |
| One machine shared by a person and the AI | Separate windows, unaware of each other | Built-in delegation bar (Cmd+K); the agent's GUI work runs in a shadow workspace by default and never touches your windows or cursor; any input from you freezes an agent driving on your desktop |
| AI toolchain | npm install -g one vendor at a time, redone on every machine | Ten vendor CLIs in the image: claude, codex, gemini, qwen, kimi, copilot, grok, agent (Cursor), opencode, vibe — working at first boot, credentials on /data so an update never wipes them |
| Offline inference | Build llama.cpp yourself, write your own unit | llama.cpp llama-server in the image; weights downloaded from the dashboard into /data/duduclaw/models, so delegation keeps working with no network |
duduclaw-qemux86-64 (the QEMU-bootable bring-up target) and duduclaw-genericx86-64 (real x86-64 hardware, x86-64-v3 tune)..sha256 and a minisign .minisig:| Artifact | Contents | Use |
|---|---|---|
duduclaw-os-<machine>-v<ver>.wic.zst | Desktop edition duduclaw-image-appliance: A/B update chain + desktop shell + offline Flatpak repo (Chromium / LibreOffice) + IME + app compatibility layer + read-only root + firewall + login hardening | Whole-disk flash; the daily driver |
duduclaw-os-installer-<machine>-v<ver>.iso | duduclaw-image-live: squashfs live environment + graphical installer. It writes the base image duduclaw-image-ab: the same A/B layout, desktop shell and gateway, without the app layer, compatibility layer or read-only root (since v0.4.0 it has the same firewall as the desktop edition) — a bring-up artifact | Flash to USB, boot, install |
duduclaw-os-installer-desktop-<machine>-v<ver>.iso | duduclaw-image-live-desktop: the same installer, writing the desktop edition duduclaw-image-appliance (added on 2026-09-04, alongside v0.1.0, and shipped with every release since) | Flash to USB, boot, install; yields the same desktop edition as the whole-disk image |
Every DuDuClaw OS image boots straight into its own desktop, fully operable from the keyboard (the desktop edition adds the app layer and shipping hardening, see the table above):
duduclaw-comp (Wayland compositor) + duduclaw-shell (the desktop shell): home screen, window switcher, lock screen, control center; Cmd+K summons the delegation bar over any app to hand work to an AI employee. The full shortcut list is on the docs site: OS keyboard shortcuts./opt/duduclaw/runtimes, with claude, codex, gemini, qwen, kimi, copilot, grok, agent, opencode and vibe on PATH at first boot. Credentials all land in /data/duduclaw (mode 0700), so a system update never wipes them. The platform deprecated its Gemini CLI runtime in v1.67.0; platform 1.73.4, which v0.4.0 embeds, still carries it; the platform removed that runtime in v1.75.0. Platform v1.76.0's personal Google connections and delegated-colleague identity are likewise not in this image. This v0.4.0 image still bundles gemini and needs a separately built OS release before the newer platform behavior is available. Platform 1.73.4 also lists Google Antigravity (agy), which the image does not bundle; the dashboard shows the vendor install command. Local inference runs on llama.cpp's llama-server; no model weights ship in the image — the dashboard downloads one into /data/duduclaw/models. What is deliberately bundled, and how to regenerate the payload: .The base image the installer ISO writes (duduclaw-image-ab) has the same desktop shell and gateway, just without the app layer; the dashboard is served by the gateway, so the box is operable from a browser on the LAN with or without a screen. What the desktop itself does with no monitor attached (whether it falls back to a purely headless box) has not been defined on real hardware yet; it is a bring-up open item.
The layer wires the whole chain, but as of v0.4.0 the published images enable only part of it. Shipped: A/B atomic update with rollback and a read-only root (desktop edition). The three items below are build-time overlay options that no artifact through v0.4.0 enables; the v0.4.0 release notes say so, and its test build on the GCP builder used kas/release-linux-builder.yml like v0.3.0. v0.3.0 was built with kas/release-linux-builder.yml and without sb-signing.yml / tpm-luks.yml; opening both published wic images (2026-10-14) confirms it: the slot UKI, the rescue UKI and systemd-boot all have an empty PE certificate table, the ESP carries no enrollment keys, the GPT holds only the ESP, two root slots and data (no verity partition), and the UKI initrd contains no tpm2 or cryptsetup tooling. The same check on v0.2.0 at its release found the same (no signatures, no verity partition, no TPM packages):
kas/sb-signing.yml) — self-signed PK/KEK/db, a dual-signed UKI per slot, first-boot key enrollment; the rootfs verified block by block, so tampering fails the read.kas/tpm-luks.yml, partial) — PCR 7+11 measured-boot key sealing with a fail-open recovery path is wired; automatic enrollment is an open defect pending a real-hardware TPM (QEMU/swtpm cannot complete it)..sha256 and a minisign .minisig; the public key is pinned in scripts/release-os.sh and re-verified fail-closed before upload. Vulnerability reporting: SECURITY.md.scripts/release-os.sh build currently chains only kas/serial1.yml by default (the release overlay: serial -j1 build + SPDX off; large Linux builders use kas/release-linux-builder.yml instead), not sb-signing.yml / tpm-luks.yml; producing signed images means building with those two overlays by hand, which is on the list for the next release.
Download the artifact plus its .sha256 and .minisig from GitHub Releases, and verify before flashing:
minisign -V -P RWQyI00ugZ/+WVisQ2ZnKeTqFs8Ze8h2X11FO9Z8le0YubFMXYTwQD7n -m <file>
shasum -a 256 -c <file>.sha256
Installer ISO: installer-desktop = desktop edition; installer = base image (desktop shell + gateway, no app layer)
dd if=<iso> of=/dev/<usb> bs=4M conv=fsync # or balenaEtcher
Boot the target in UEFI mode with Secure Boot off (published images remain unsigned through v0.4.0; only signed builds enroll the DuDuClaw keys on first boot). Boot from the USB stick, pick the target SSD in the graphical installer, and reboot: the installed system is the A/B UKI + systemd-boot layout, and the dashboard is reachable from a browser on the same LAN.
Whole-disk image (desktop edition: desktop + apps + shipping hardening)
zstd -d --long=27 <wic.zst>
dd if=<wic> of=/dev/<target-disk> bs=4M conv=fsync # or bmaptool copy
Before v0.4.0 was published, the
duduclaw-qemux86-64whole-disk image was booted on the GCP builder under headless QEMU (software emulation, no KVM) to the login prompt (about 65 s), and both installer ISOs for that machine booted to the live environment's automatic root login (about 125 s each). The installer wizard was not run this release; the last full QEMU installs on record are still v0.1.0 and a 2026-09-06 development build. Separately, the qemux86-64 test variant of the desktop image went through two rounds of rootless-gateway checks; the second round passed 35 of 36 (the remaining one is a doctor headline wording issue, fixed in platform main). Not verified yet: upgrading a v0.3.0 device through the A/B update path, the full LLM-backed task sandbox / computer use / discovery flows, the Windows VM (needs KVM), real-hardware Wi-Fi and audio.duduclaw-genericx86-64is the real-hardware target and cannot be booted under QEMU; in v0.4.0 it was built but not booted (neither the whole-disk image nor its two ISOs), and a real-hardware boot is the most important open validation item.One-way upgrade. Once a v0.4.0 image has booted successfully, the device can no longer go back to v0.3.0 or earlier (those run the gateway as root). Recovering from a bad later release means installing a fixed newer image or using the rescue entry.
Prerequisites:
duduclaw-yocto-builder container (macOS has no native bitbake).scripts/sync-platform.sh <platform-version> does all four plus the version bump, see docs/guides/platform-sync.md; per recipe: meta-duduclaw/recipes-duduclaw/duduclaw-cli/refresh-src.sh; override the path with DUDUCLAW_CLI_SRC_ROOT).minisign and gh for signing and publishing../scripts/release-os.sh audit # show OS + embedded-platform versions
./scripts/release-os.sh build # kas build inside the running builder
./scripts/release-os.sh smoke # headless QEMU boot to a login prompt
./scripts/release-os.sh package # smoke gate + compress + sha256 + minisign
./scripts/release-os.sh sign # sign a set made by package --no-sign on a builder
./scripts/release-os.sh publish # upload to a GitHub Release
A remote builder (GCP, for example) never holds the signing key: run package --no-sign there, copy artifacts/os/v<version>/<machine>/ back to the machine that has the key, then run sign and publish. A Linux builder with plenty of memory can set DUDUCLAW_OS_KAS_OVERLAY=meta-duduclaw/kas/release-linux-builder.yml instead of the default serial1.yml (SPDX still off, no -j1); pass the same value to build, smoke and package.
The log patterns smoke uses to decide "reached a login prompt" and "QEMU / kas gave up" have their own test: scripts/tests/smoke-patterns.sh (no Docker or QEMU needed; it checks each line of the samples in scripts/tests/fixtures/smoke/).
Every subcommand's v<version> is optional and defaults to the VERSION file, the OS's own release line, independent of the embedded platform version. Run release-os.sh with no argument for the full usage text. Builder container setup, cache and disk layout, and the role of each image recipe are in meta-duduclaw/README.md.
| Path | What |
|---|---|
meta-duduclaw/ | the Yocto layer (distro, machines, images, duduclaw-* recipes, kas configs) |
scripts/release-os.sh | the build → smoke → package → publish pipeline |
VERSION | the OS's independent release version |
docs/ | public docs, one subdir per type, indexed in docs/README.md |
wiki/ | internal bring-up notes, acceptance checklists, evidence logs |
appliance/ | the earlier Debian/mkosi appliance line, frozen, kept as a reference/transition artifact; the product is not built from here |
/docs/ on the same domain, combining this repo's and the platform repo's public docs in zh-TW / en / ja, and never links to GitHub). GitHub itself is kept to the repo, Releases, Issues, and LICENSE.docs/README.md — the documentation index for this repo (public docs, component references, internal notes, the placement rule).meta-duduclaw/README.md — layer reference: layout, image roles, builder container, kas build.CHANGELOG.md — release history, Keep a Changelog format.CONTRIBUTING.md / SECURITY.md — how to contribute, how to report vulnerabilities.Apache License 2.0, the same license as the DuDuClaw platform. See LICENSE.
compat.d: Bottles for Windows desktop apps, a KVM virtual machine + RDP for full Windows, Waydroid for Android (no GApps, self-setup); macOS apps are not run locally. Scope and the explicit non-promises are in the app compatibility guide (on the docs site: https://os.duduclaw.dudustudio.monster/docs/en/os/guides/app-compat/).