Codync
免费开源的 1:1 Grok Bot 与 Muse 替代方案。可在 iPhone、Mac 或 Linux 桌面上将 Claude 代码、Codex、Cursor 以及 40 多个编码代理作为持久机器人使用。支持群组聊天、线程、应用。
AI 翻译
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Native macOS GUI for Apple's container CLI — Docker Desktop-style, SwiftUI, free & open source
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗A native, Docker Desktop-style macOS app for Apple's container CLI — manage containers, images, volumes, networks and machines from a fast SwiftUI interface instead of the terminal.
Container Desktop does not reimplement any container logic: every action shells out to the official container CLI and parses its JSON output, so what you see is always exactly what the CLI would tell you.
📘 Documentation — Compose guide, x-init tasks, host.containers.internal, troubleshooting.
exec -it via SwiftTerm)--rm — with a live, copy-pasteable shell preview of the exact commanddocker-compose.yml and the app translates it into container run calls — project network, dependency ordering, grouped containers on the list with start/stop-all. One-off setup tasks (e.g. database creation) via the x-init: true service extension run to completion before the other services start. The host.containers.internal alias resolves to the project network's gateway (your Mac as seen from containers), and service hostnames are wired between containers via /etc/hosts (works around the broken name DNS in container 1.0.0). A "skip init tasks" toggle reruns a stack without repeating one-off setupLogs with severity colouring, and a full terminal inside the container:
| Log viewer | Embedded terminal |
|---|---|
container k8s plugin (container 1.2.1+, marked EXPERIMENTAL by Apple): create with a chosen name, CPU, memory and node image, start, delete, and load a locally built image straight into the cluster's containerd (load-image) so pods can use imagePullPolicy: Neverhelm history, and uninstallvalues.yaml: a generated form with type-aware controls, help text harvested from the file's comments, a key filter, and a raw-YAML tab that stays in sync. Only the keys you actually change end up in -f, so chart defaults keep moving with chart upgrades. Check (dry run) renders the release on the cluster first, surfacing template errors and values.schema.json violations before anything is applied~/.kube/config is never read or modified, so a GUI action cannot reach a production clustercontainer CLI, so the app writes a snapshot after each refresh and the widget reads it — which also means the widget keeps showing the last known state while the app is closed, and says how old it is.container CLI installed (default: /usr/local/bin/container; a custom path can be set in app Settings)helm for the Helm section (brew install helm), and container 1.2.1+ for local Kubernetes clustersDownload the DMG from Releases, open it and drag Container Desktop to Applications.
Note on Gatekeeper: releases are currently not notarized (no paid Apple Developer membership). On first launch macOS will warn that the app is from an unidentified developer. Open System Settings → Privacy & Security and click Open Anyway, or remove the quarantine flag manually:
xattr -dr com.apple.quarantine "/Applications/ContainerGUI.app"Alternatively, build from source — it takes one command.
Once installed, Container Desktop checks for updates with Sparkle (use Check for Updates… in the app or menu-bar menu). Updates are verified with an EdDSA signature and Sparkle clears quarantine on the installed update, so after the first launch you won't need the Gatekeeper step again. Maintainer release flow (sign/notarize if available → generate_appcast → publish DMG + docs/appcast.xml) is documented in scripts/package.sh.
The update check is the only thing Container Desktop sends anywhere, and since 0.8.3 it carries three values: a random identifier generated once on this installation, the app version, and the macOS version. They exist so the project can tell how many people use it and on which version — a question the appcast's own traffic cannot answer, because one machine checking daily looks like thirty machines checking once.
It does not send your IP address, your computer's name, your account, or anything about the hardware. Sparkle's own system profile — which reports the Mac model, the CPU and the memory — stays switched off. Turn the whole thing off in Settings → Privacy → Anonymous statistics; updates keep working.
Od 0.8.3 program przy sprawdzaniu aktualizacji wysyła losowy identyfikator instalacji, swoją wersję i wersję macOS — po to, by dało się policzyć, ilu ludzi go używa. Bez adresu IP, bez nazwy komputera, bez danych o sprzęcie. Wyłącznik: Ustawienia → Prywatność → Anonimowe statystyki.
brew install xcodegen
git clone https://github.com/sembsa/ContainerDesktop.git && cd ContainerDesktop
xcodegen generate
xcodebuild -project ContainerGUI.xcodeproj -scheme ContainerGUI \
-destination 'platform=macOS' -derivedDataPath .build build
open .build/Build/Products/Debug/ContainerGUI.app
Tests:
xcodebuild test -project ContainerGUI.xcodeproj -scheme ContainerGUI \
-destination 'platform=macOS' -derivedDataPath .build
Distributable DMG (ad-hoc signed, no notarization):
scripts/package.sh # produces dist/ContainerDesktop.dmg
SwiftUI views (per feature) → @Observable stores → ContainerCLI (actor) → Process(container CLI)
│ │ │
MenuBarExtra AppModel (root) JSON (Codable) / line streams (AsyncStream)
Embedded terminal (SwiftTerm, PTY)
ContainerGUI/CLI — process execution with timeouts and watchdog, argv builder with a shell-style tokenizer, streaming line readerContainerGUI/Models — Codable models mapped to real CLI JSON outputContainerGUI/Features/* — one store + views per section