DeepSeek Harness Remote
DeepSeek Harness Remote 可將手機或另一台電腦與你運行 DeepSeek Harness 的電腦安全連接,隨時隨地繼續你的工作,方便隨時查看進度並繼續工作。
AI 翻譯
尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
Tasks, documents and calendar for your team, in one calm place. Free, open source and self-hosted, with apps for Android, Linux and Windows that work offline.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗English and French, light and dark themes.
Download them from https://looty.untypequicode.fr (or the GitHub releases). Each app asks for the address of your Looty server.
| Platform | Notes |
|---|---|
| Android 8+ | Native Kotlin app, no Google services (UnifiedPush), widget, share target, offline editing, updates inside the app |
| Linux | .deb for Debian 12 / Ubuntu 22.04+ with a signed apt repository (apt upgrade updates it); Nix package (nix run github:untypequicode/looty#looty-desktop) |
| Windows 10/11 | Installer for the current user (unsigned: Windows may warn about an unknown publisher) |
| iPhone / iPad | Open Looty in Safari and add it to the home screen (installable web app) |
The desktop app and the dev shells are prebuilt for x86_64 and aarch64 Linux in the looty Cachix cache, so Nix downloads instead of compiling. The flake declares the cache; Nix only honours that if your user is trusted, so on NixOS add it to your configuration once:
nix.settings = {
extra-substituters = [ "https://looty.cachix.org" ];
extra-trusted-public-keys = [ "looty.cachix.org-1:xEEH96rXQvBMpS4Flzu1yAfe1Wt4Pz2nKssc1ga5eYc=" ];
};
Elsewhere, put the same two lines in /etc/nix/nix.conf. Without this, Nix warns ignoring the client-specified setting 'trusted-public-keys' and builds locally. Then nix run github:untypequicode/looty#looty-desktop.
Looty is three small services plus PostgreSQL, shipped as Docker images (amd64 and arm64):
| Service | Role | Stack |
|---|---|---|
backend | API, files, CalDAV, mail | Rust (axum) |
frontend | Web interface | Nuxt 3 |
collaboration | Real-time document editing | Hocuspocus (Yjs) |
Get the compose file of the latest release and create a .env next to it:
curl -LO https://github.com/untypequicode/looty/releases/latest/download/docker-compose.yml
curl -o .env https://raw.githubusercontent.com/untypequicode/looty/main/.env.example
Edit .env: the domain (APP_DOMAIN, BASE_URL), database password, LOOTY_SECRET_KEY (openssl rand -base64 32) and your OpenID Connect provider (OIDC_ISSUER, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET).
docker compose up -d.
The production compose file expects a Traefik reverse proxy to route the domain (labels are in the file); behind another proxy, send /api, /uploads, /pages, /dav and /.well-known/caldav to the backend (8080), /collab to the collaboration service (8082, prefix stripped) and everything else to the frontend (3000). Pin a version with LOOTY_VERSION=<x.y.z>.
Backups: scripts/backup.sh and scripts/restore.sh.
backend/ Rust API (axum, PostgreSQL); release notes in releases.json
frontend/ Nuxt 3 single-page app
collaboration/ Hocuspocus server for real-time documents
desktop/ Tauri v2 app (Linux, Windows) and Debian packaging
android/ Native Android app (Kotlin, Compose)
site/ Download website (Astro + a tiny Rust server)
scripts/ Release, backup and site publishing scripts
A Nix shell provides every toolchain: nix-shell (or nix develop).
docker compose up -d postgres # database
cd backend && cargo run # API on :8080
cd frontend && npm install && npm run dev # web app on :3000
cd collaboration && npm install && node index.js
docker compose up (without Traefik) builds and runs everything from source; add docker-compose.override.yml.example as docker-compose.override.yml to reach it on port 3000 (the frontend also relays the /api/ws and /collab WebSockets, so real-time editing works without a proxy). Checks run by CI: cargo test in backend/, node scripts/check-i18n.mjs (French and English texts match) and npm run build in frontend/. Each app has its own README: desktop/, android/, site/.
Bump the version, add the notes (English and French) to backend/releases.json and merge into main: CI builds and publishes what changed. Details in RELEASING.md.