DeepSeek Harness Remote
DeepSeek Harness Remote 可将手机或另一台电脑与你运行 DeepSeek Harness 的电脑安全连接,随时随地继续你的工作,方便随时查看进度并继续工作。
Translation pending
A daily planner for people who run AI coding agents.
ProductivityTypeScript · RustGitHub @turnlaneOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A daily planner for people who run AI coding agents. Your calendar, your own tasks, and the work of Claude Code and Codex, in the terminal or in their desktop apps, sit on the same day lane. Nothing is typed in by hand: AI work is read from the agents' local files, and the moments an agent is waiting on you surface as Your turn.
0.7.0 is the first public release. macOS only (macOS 14 or later, Apple Silicon). Install with Homebrew or the signed zip (below); CHANGELOG.md lists what changes between versions. Interfaces, file formats, and the CLI may still change before 1.0.
turnlane report, or the MCP server.Screenshots use synthetic data from scripts/dev-board.ts.
Turnlane is a single Turnlane.app (menu bar item, notifications, quick add) plus a background daemon turnlaned and a CLI turnlane, all running on your Mac.
With Homebrew (recommended; signed and notarized):
brew install --cask turnlane/tap/turnlane
Then open Turnlane from Applications. The cask also puts turnlane on your PATH. Turnlane downloads new versions from GitHub Releases and installs them when you choose Restart to update (turn this off in Settings › General); brew upgrade --cask turnlane also works.
From GitHub Releases: download Turnlane-<version>.zip from the Releases page, unzip it, and move Turnlane.app to Applications. Turnlane-<version>.zip.sha256 holds the checksum (shasum -a 256 -c Turnlane-<version>.zip.sha256). To use turnlane in your shell, choose Install next to Command line on the last setup screen (or in Settings › General); it links ~/.local/bin/turnlane.
Uninstall. Run turnlane uninstall --all first: it removes Turnlane's hooks and MCP entries from Claude Code and Codex, which brew uninstall cannot do. Then brew uninstall --cask turnlane (or move the app to the Trash). Your data in ~/Library/Application Support/turnlane/ stays; brew uninstall --zap --cask turnlane removes it too.
The first time you open it, macOS asks whether to open an app downloaded from the internet. The dialog should say that Apple checked it for malicious software (the release build is notarized). If macOS instead says it cannot verify the developer or that the app may contain malware, do not open it; download it again from the Releases page.
If you used an earlier build signed with a different certificate, macOS may ask again for Calendar and Automation access, or you may need to turn Turnlane on again in System Settings > Privacy & Security. turnlane doctor shows how the installed app is signed and notarized (docs/dev/codesign.md 5.6).
From source (Bun 1.4.x, Xcode command line tools, and Rust for the desktop shell):
git clone https://github.com/turnlane/turnlane.git
cd turnlane
bun install
bun run check # lint, typecheck, tests
bun run build # out/turnlaned and out/turnlane
out/turnlane self-install --dry-run # shows what will be written
out/turnlane self-install # ~/.local/bin + a LaunchAgent, then starts the daemon
turnlane open # opens the board (desktop app if installed, otherwise your browser)
Building Turnlane.app and the calendar helper from source: see docs/dev/.
Board. Add a task with New (or from the ⌘K command palette), drag it onto the time axis to plan it, drag it to another day to move it. Calendar events come from macOS Calendar (EventKit), so every account your Mac already has shows up; Turnlane can create and edit events there too.
Your turn. Items are generated from the agents' local files and from hooks (install below). Open and respond brings you to the terminal where the agent is waiting. Snooze, mark as handled, or say it is not needed.
Ask AI. From any task, press Ask AI to start Claude Code or Codex in a new tab of your usual terminal, in a fresh git worktree, with the task title, note, and your instructions as the first prompt. The run shows up as that task's AI work, and the task gets its own Your turn items and a quick check of the result (diff size, tests, CI).
Daily note and MCP. The record for any day is available as Markdown:
turnlane report # today's note as Markdown (--copy for the clipboard)
turnlane report 2026-10-02
turnlane today # events, tasks, Your turn
turnlane add "Reply to the design review" --date 2026-10-03 --est 30
The same data is exposed to agents through a stdio MCP server (turnlane mcp) with the tools add_task, list_tasks, get_today, get_day, get_free_slots, schedule_task, complete_task, list_your_turn, get_ai_work, get_daily_report, and report_ai_work, so a Claude Code or Codex session can add a task to your Inbox or read today's plan.
Turnlane works by reading the agents' local session files alone. Two optional installs make it faster and two-way:
turnlane hooks install # hooks: tells Turnlane the moment an agent waits for permission or a reply
turnlane mcp install # MCP: lets Claude Code / Codex add tasks to Turnlane and read your day
turnlane mcp status # where it is registered (also shown by turnlane doctor)
Both commands apply to every Claude Code profile found (~/.claude and the ~/.claude-* directories used with CLAUDE_CONFIG_DIR) and to Codex (~/.codex); narrow with --claude-dir <dir> / --codex, preview with --dry-run. Turnlane only adds and removes its own entries (tagged --managed-by turnlane), never touches other tools' hooks, and backs up each file before writing (*.bak-turnlane-<timestamp>). Restart a running agent to pick the change up; turnlane hooks uninstall / turnlane mcp uninstall remove it.
Work that leaves no session log for Turnlane to read, such as your own scripts, cron jobs, or an agent running in a sandbox, can report its state itself. Each report shows up as AI work next to Claude Code and Codex, and a waiting report lands on Your turn right away:
turnlane ai report --source myscript --id nightly --title "Nightly export" --project Reports --state started
turnlane ai report --source myscript --id nightly --state waiting --kind question --text "Overwrite last night's file?" --option Overwrite --option "Keep both" --url https://example.com/runs/42
turnlane ai report --source myscript --id nightly --state done
--source is any lowercase name you choose; --state is started, running, waiting, done, or error. If Turnlane isn't running, the report is saved and read when it starts. The same report can be sent with the MCP tool report_ai_work or POST /api/ai/reports. For now you answer in your own tool: Turnlane shows the question and opens the --url.
| Agent | Tested with | What is read |
|---|---|---|
| Claude Code | 2.1.x | projects/**/*.jsonl (metadata only), sessions/*.json, hooks |
| Codex CLI | 0.147–0.159 | sessions/**/rollout-*.jsonl, session_index.jsonl (the SQLite database is never opened), hooks |
| Claude Desktop app, Code tab | the Claude Code it bundles | the same files as Claude Code, in that Claude Code's config directory; nothing extra to set up |
| Codex app | the Codex it bundles | the same ~/.codex files as Codex CLI; nothing extra to set up |
Chats in claude.ai, in the Claude app's chat view, or in the ChatGPT app are not read: those conversations are not stored on your Mac.
Each agent is an adapter in packages/collectors. Adapters are small, dependency-free, and tested against anonymized fixtures; adding another agent is the most useful contribution you can make. Open an adapter request first so the log format can be discussed without posting conversation text.
Turnlane is built so that you can check these claims in the code.
127.0.0.1 only. There is no account, no cloud sync, no telemetry, and no server run by the author. All data lives in ~/Library/Application Support/turnlane/; turnlane export --json gets it all out again.turnlane doctor audits the database for anything longer than these limits.Turnlane Pro is a planned, separately licensed extension of the official build; the current release does not include it. What it will add, and the waiting list, are at turnlane.dev.
Specifications and decision records are currently written in Japanese; the code, UI, and CLI are in English.
| Document | Contents |
|---|---|
| docs/spec/phase0-plan.md | Implementation plan: repository layout, schema, HTTP API, CLI, MCP tools, test strategy |
| docs/spec/ai-session-ingestion.md | How sessions are read per agent, state derivation, follow-ups, privacy rules |
| docs/spec/ux-mvp.md | Screens, state model, shortcuts |
| docs/design/ | Final designs and the design system |
| docs/adr/ | Architecture decision records |
| Name | Role |
|---|---|
turnlaned | Background daemon (Bun + Hono + SQLite): ingestion, local API, serves the UI |
turnlane | CLI: tasks, hooks endpoint, stdio MCP server, daemon management |
Turnlane.app | Desktop shell (Tauri 2): window, menu bar, notifications, quick add |
TurnlaneCalendarHelper.app | Small Swift helper that talks to EventKit |
turnlane doctor --redact prints shareable diagnostics with paths and names removedThis is a side project maintained by one person. Issues and discussions are read, but there is no promise of a reply or a fix on any schedule.
Turnlane is released under the MIT License. Copyright (c) 2026 Rootstack Inc. Bundled third-party packages are listed in THIRD_PARTY_NOTICES.md. Extensions included in the official build are licensed separately and are not part of this repository.
claude or codex you already have installed, in your terminal, under your own account. Turnlane does not keep the prompt and does not talk to Anthropic or OpenAI itself (ADR 0014).claude or codex CLI with a fixed instruction and the day's Markdown note (task titles, AI work titles, repository names, PR numbers, durations, your notes). That request goes to the tool's provider through the tool itself, under your account. The run uses a scratch directory and a flag that does not save a session, and it is not counted as AI work.turnlane mcp install registers Turnlane with Claude Code and Codex. Any tool you connect it to can then add tasks and read your tasks, today's plan, AI work, and the daily record, including the stored lines above. Turnlane sends nothing on its own; what the connected tool does with what it reads is up to that tool. turnlane mcp uninstall removes the entry.https://github.com/turnlane/turnlane/releases/latest/download/latest.json (GitHub redirects it to the file attached to the latest release), once a day to tell you about new versions. When there is one, it downloads that release's zip from the same GitHub Releases (the url in latest.json; nothing outside GitHub), checks it against the sha256 in latest.json, Apple's code signature and notarization, and that it is signed by the same developer team as the app you are running, then installs it when you choose Restart to update or while the app isn't running. If any check fails, nothing is installed and you are pointed to brew upgrade --cask turnlane or the Releases page instead. Both requests are plain GETs with the user agent turnlane/<version>; no cookies, identifiers, or usage data are sent. The notarization check (spctl) normally works offline because the ticket is stapled to the app, but macOS may contact Apple when it can't find one. turnlane config set update.download false stops the download and install (you are only told about new versions); turnlane config set update.check false turns both off. Both are also in Settings › General. A build that includes an extension and a development install (out/turnlane self-install) never check. turnlane doctor shows whether the check and the download are on and what they last did (ADR 0008).api.polar.sh) to verify a license key, sending the key and a random per-Mac ID. A build from this repository contains no extension and makes no connection of its own apart from the update check and the update download; gh, claude, and codex run under your own account when you use the features that call them. See ADR 0015.