DeepSeek Harness Remote
DeepSeek Harness Remote: DeepSeek Harness 실행 PC와 모바일·PC를 안전하게 연결해 어디서나 작업 이어받기
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Ask ChatGPT about your Gmail from the search bar: find, read, draft, organize and schedule. Chrome extension, no server.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Ordinary searches like from:bob invoice still search Gmail exactly as before. A chip at the end of the search bar
shows whether Enter will search or ask ChatGPT; click it to flip, or press Shift+Enter to always ask.
| Find | Questions become precise Gmail searches, retried and broadened until something answers them, with numbered links to the emails used. |
| Read | Whole conversations and their attachments: PDF, Word, Excel, PowerPoint, text, CSV and HTML. "This email" means the one you have open. |
| Show | "Pull it up" opens the email in Gmail; "show me everything from…" runs the search in Gmail's own list. |
| Draft | Replies threaded into the right conversation, or new emails, saved as drafts and opened for you to review and send. |
| Organize | Archive, mark read or unread, star, label, move to the inbox or Trash. Always a list you review and confirm, with Undo. Unsubscribe shows each sender's own unsubscribe link. |
| Calendar (optional) | Events from bookings and appointments, with times as the email states them (a flight departs in one time zone and lands in another), the details you need on the day, and a link back to the email. You click Add on each. Also answers "am I free Thursday afternoon?". |
| Gmail filters (optional) | Sees your filters and creates, edits, merges or deletes them when you ask, always as a list of changes you tick and confirm, with Undo. "Review my filters" finds duplicates, filters that can be merged, overlaps, labels that no longer exist and filters that have not matched anything in a year. A new filter can also be applied to mail you already have. Anything that needs no AI (labelling by sender or subject, skipping the inbox, deleting) becomes a filter, which Gmail runs itself, even with every computer off. |
| Rules (optional) | For what needs ChatGPT or reaches beyond Gmail: a Gmail search, an optional yes/no question ChatGPT answers per email, and fixed actions (label, archive, star, mark read or important, Trash, a desktop notification, or a webhook to ntfy, Home Assistant, n8n, Discord or Slack). New mail is handled as it arrives, and mail that came in while Chrome was closed is caught up later. Daily limits, a dry run on recent mail, and an activity log with Undo. Create, change, pause or delete rules in settings or by asking in chat. |
| Looks like Gmail | The answer drops down under the search bar like Gmail's own suggestions, in Gmail's light or dark theme. Expand it for long conversations; Esc closes it. |
It is not Gmail's built-in "Ask Gmail" (Google's paid Gemini feature): Inbox Pilot uses your ChatGPT account and models.
Chrome Web Store: the listing is in review. Until it is live, install from source.
From source: you need Chrome 140 or later, Node.js 22.12 or later, and npm.
git clone https://github.com/JD2005L/InboxPilot.git
cd InboxPilot
npm ci
npm run build # writes the extension to dist/
Open chrome://extensions, turn on Developer mode, click Load unpacked and choose the dist folder. The
settings page opens and starts the guided setup.
You need a ChatGPT plan that includes Codex (Plus, Pro, Business, Edu or Enterprise) and a Gmail account. The settings page walks through every click with direct links, checks each step, and shows the exact fix for every error Google or OpenAI can show.
The full policy is in PRIVACY.md (also published at https://jd2005l.github.io/InboxPilot/privacy.html).
Note: ChatGPT-plan access for third-party apps uses OpenAI's Codex sign-in, the same device-code flow as the open-source Codex CLI. It works today, but OpenAI could change or restrict it.
Gmail tab (content script: search-bar chip + answer panel, in a closed shadow root)
│ long-lived port (ask, stop, apply, undo)
▼
Service worker
├─ ChatGPT: device-code sign-in → chatgpt.com/backend-api/codex/responses (streamed, store: false)
│ tools: search_emails, read_thread, read_attachment, open_email, show_in_gmail, create_draft,
│ propose_actions, list_filters, propose_filter_changes, list_rules, propose_rule,
│ and check_calendar / propose_event while Calendar is connected
├─ Gmail API, with a token from the user's own Google OAuth client (gmail.readonly, plus gmail.modify and
│ gmail.settings.basic for filters if granted)
├─ Calendar API, same token, if connected (calendar.events)
└─ Offscreen document, only while reading a PDF: pdf.js text extraction
codex login --device-auth); the model list comes from
the plan's own catalog.chrome.identity.launchWebAuthFlow with the user's OAuth client and renews silently every
hour with exactly the scopes that were granted.ProposalBook), Add creates exactly the event its card showed (EventBook), and Apply makes only the filter
changes its card listed (FilterBook), each once. Every target is looked up first, so the model cannot invent one.propose_filter_changes. Gmail cannot edit a filter in place, so a change creates the
new filter first and only then deletes the ones it replaces: a failure part-way leaves a duplicate, never a gap.
Applying a filter to existing mail changes only the emails the card counted, and only those whose labels actually
change, so Undo reverses exactly that.With sync on (Rules tab, Turn on sync), rules, webhook destinations and the activity log live in the Google Drive app-data folder of your own Google app: hidden, private to that app, with no access to your files. Every browser writes its own heartbeat file each minute.
If the ChatGPT plan's usage limit is reached, only rules that ask ChatGPT pause, until the limit resets; filter-only rules keep running, and new mail stays queued for up to 8 days so nothing is skipped.
npm run check # typecheck, lint, unit tests, build
npm run test:watch
npm run package # store build and release/chrome-web-store-<version>/ (zip, listing text, images)
npm run package takes the store screenshots with the real built extension on a mock Gmail of made-up emails
(store/mock-gmail.html), with ChatGPT and the Gmail API replaced by scripted scenes (store/stub.js). It needs
Playwright's Chromium (npx playwright install chromium).
For your own build, you can put your Google client ID in config/extension.config.json (git-ignored; see the
.example file) or the GMC_GOOGLE_CLIENT_ID environment variable, and setup skips the paste step. Store builds
never include one. The unpacked build's extension ID is pinned by config/extension-public-key.txt
(lkkohbhfochcaebnjenjjofieghkkkil), so the Google redirect URI stays the same across rebuilds.
| Path | Role |
|---|---|
src/background/chatgpt/ | Device-code sign-in, token refresh (single-flight; refresh tokens rotate), streaming Responses client |
src/background/gmail/ | Google sign-in, Gmail API, message and MIME parsing, attachment text, draft builder |
src/background/calendar/ | Calendar API client, event validation (wall-clock times in IANA zones), the event fence |
src/background/chat/ | System prompt, tool definitions, the tool loop, organize and undo, filter changes and undo, the proposal fences |
src/offscreen/ | pdf.js text extraction, loaded only on demand |
src/content/ | Search-bar integration (Enter routing, chip), the answer panel, theme detection |
src/options/ | Settings page and setup guide |
src/shared/ | Messages, types, rules and filters in words, the DOM builder, the safe Markdown renderer |
scripts/ | Build, icon renderer, store packaging |
site/ | The project website (GitHub Pages) |
CODEX_CLIENT_VERSION in scripts/build.mjs is the Codex release the model catalog is requested for; bump it when
OpenAI ships models that need a newer client.
Bug reports, ideas and pull requests are welcome in issues. Please
run npm run check before sending a change. For a setup problem, include your Chrome version and what the settings
page shows.
Inbox Pilot is free with nothing held back. If it saves you time, you can chip in toward its upkeep. Teams on Google Workspace can have it set up for them.
More by the author: GitHub Actions Monitor and GitHub Repo Navigator.
The code is licensed under the GNU General Public License v3.0: you may use, study, change and share it, and anything you distribute that is based on it must be released under the same license, with its source.
The license covers the code, not the name. "Inbox Pilot" and its paper-plane icon identify the official release by James Levac; if you publish a fork (for example on the Chrome Web Store), give it a different name and icon so people can tell them apart.
Not affiliated with or endorsed by Google or OpenAI. Gmail is a trademark of Google LLC; ChatGPT is a trademark of OpenAI.