{"id":49528077,"url":"https://github.com/anton88vlc/mail-cockpit","last_synced_at":"2026-05-02T04:04:58.310Z","repository":{"id":354351862,"uuid":"1223262784","full_name":"anton88vlc/mail-cockpit","owner":"anton88vlc","description":"Codex-powered multi-account Gmail triage cockpit using gogcli","archived":false,"fork":false,"pushed_at":"2026-04-28T06:48:40.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-28T08:29:36.495Z","etag":null,"topics":["codex","email-triage","gmail","gogcli","llm-agents"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anton88vlc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-28T06:47:54.000Z","updated_at":"2026-04-28T06:48:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/anton88vlc/mail-cockpit","commit_stats":null,"previous_names":["anton88vlc/mail-cockpit"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/anton88vlc/mail-cockpit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anton88vlc%2Fmail-cockpit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anton88vlc%2Fmail-cockpit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anton88vlc%2Fmail-cockpit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anton88vlc%2Fmail-cockpit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anton88vlc","download_url":"https://codeload.github.com/anton88vlc/mail-cockpit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anton88vlc%2Fmail-cockpit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32522253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["codex","email-triage","gmail","gogcli","llm-agents"],"created_at":"2026-05-02T04:04:32.831Z","updated_at":"2026-05-02T04:04:58.296Z","avatar_url":"https://github.com/anton88vlc.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mail Cockpit\n\nMail Cockpit is a small Codex workspace for human-grade triage across several\nGmail accounts.\n\nIt is not a Gmail bot, not a rules engine, and not a pile of notification\nscripts. [`gogcli`](https://github.com/steipete/gogcli) reads Gmail. Codex reads\nthe policy, inspects the mail, groups the noise, explains the actual risks, and\nrecommends the next action in plain language.\n\nThe point is simple: one place for \"what deserves my attention across all my\nmailboxes?\" without opening three inboxes and becoming your own unpaid email\nintern.\n\n## What This Gives You\n\n- Multi-account Gmail triage through `gogcli` aliases.\n- A reusable `AGENTS.md` contract that tells Codex how to behave.\n- A living mail policy in `docs/mail-triage-policy.md`.\n- A durable risk tracker in `docs/active-findings.md`.\n- Copy-paste prompts for manual runs and recurring read-only checks.\n- A safety model that is read-only by default and blocks sending unless you\n  explicitly change it.\n\n## How It Works\n\n1. `gogcli` owns Google auth and Gmail access.\n2. Codex starts every run with an auth check.\n3. Codex searches recent mail across every configured alias.\n4. Codex opens only threads that need context.\n5. Codex returns a short action-oriented brief.\n6. Durable rules and unresolved risks get written back into docs, not lost in\n   chat history.\n\n## Prerequisites\n\n- Codex or another local coding agent with terminal access.\n- `gogcli` installed as `gog`.\n- Google OAuth client credentials for `gogcli`.\n- One or more Gmail accounts you are allowed to access.\n\nInstall `gogcli`:\n\n```bash\nbrew install gogcli\n```\n\nOr build it from source:\n\n```bash\ngit clone https://github.com/steipete/gogcli.git\ncd gogcli\nmake\n./bin/gog --help\n```\n\n## Quick Start\n\nClone this repo:\n\n```bash\ngit clone https://github.com/anton88vlc/mail-cockpit.git\ncd mail-cockpit\n```\n\nEdit placeholders in:\n\n```bash\nAGENTS.md\ndocs/mail-triage-policy.md\nprompts/run-triage.md\nprompts/automation.md\n```\n\nAt minimum, replace:\n\n- `\u003cGOG\u003e` with your `gog` path, usually `gog` or `/Users/you/go/bin/gog`.\n- `\u003cLANGUAGE\u003e` with the report language.\n- `\u003cTIMEZONE\u003e` with an IANA timezone, for example `Europe/Madrid`.\n- `\u003cALIAS_1\u003e`, `\u003cALIAS_2\u003e`, `\u003cALIAS_3\u003e` with mailbox aliases.\n- `\u003cEMAIL_1\u003e`, `\u003cEMAIL_2\u003e`, `\u003cEMAIL_3\u003e` with Gmail addresses.\n\nIf you have fewer than three mailboxes, delete the extra placeholders. If you\nhave more, add more aliases using the same pattern.\n\n## Configure Gmail Access\n\nDo not paste OAuth codes, refresh tokens, client secrets, or mailbox passwords\ninto chat. Keep auth local.\n\nSet OAuth credentials:\n\n```bash\n\u003cGOG\u003e auth credentials set /path/to/google-oauth-client.json\n```\n\nAuthorize accounts read-only:\n\n```bash\n\u003cGOG\u003e auth add \u003cEMAIL_1\u003e --services gmail --gmail-scope readonly\n\u003cGOG\u003e auth add \u003cEMAIL_2\u003e --services gmail --gmail-scope readonly\n\u003cGOG\u003e auth add \u003cEMAIL_3\u003e --services gmail --gmail-scope readonly\n```\n\nCreate aliases:\n\n```bash\n\u003cGOG\u003e auth alias set \u003cALIAS_1\u003e \u003cEMAIL_1\u003e\n\u003cGOG\u003e auth alias set \u003cALIAS_2\u003e \u003cEMAIL_2\u003e\n\u003cGOG\u003e auth alias set \u003cALIAS_3\u003e \u003cEMAIL_3\u003e\n```\n\nTurn on send guards:\n\n```bash\n\u003cGOG\u003e config set timezone \u003cTIMEZONE\u003e\n\u003cGOG\u003e config set gmail_no_send true\n\u003cGOG\u003e config no-send set \u003cALIAS_1\u003e\n\u003cGOG\u003e config no-send set \u003cALIAS_2\u003e\n\u003cGOG\u003e config no-send set \u003cALIAS_3\u003e\n```\n\nVerify:\n\n```bash\n\u003cGOG\u003e auth list --check --json\n```\n\nFor read-only triage, stop here. If you later want archive, mark-read, or label\nchanges, re-authorize only the relevant mailbox with a wider Gmail scope and\nkeep `gmail_no_send` enabled.\n\n## Run A Triage\n\nOpen Codex in this repo and paste:\n\n```bash\nprompts/run-triage.md\n```\n\nCodex should return buckets like:\n\n```text\nUrgent\n- [work] Payment failed for cloud hosting. Service may pause tomorrow. Update\n  billing here: https://...\n\nNeeds reply\n- [personal] Contractor asks for confirmation. Reply yes/no by Friday.\n\nWaiting\n- [admin] Government office has not answered the document request yet.\n\nFYI/noise\n- Product updates, receipts, and newsletters grouped briefly.\n```\n\nThe brief should say what matters, why, and what to do next. \"You have 48\nunread emails\" is not insight. It is just a counter having a little crisis.\n\n## Recurring Runs\n\nUse `prompts/automation.md` for cron-like or heartbeat runs.\n\nKeep the recurring run read-only. If nothing deserves attention, it should\nreturn exactly:\n\n```text\nDONT_NOTIFY\n```\n\n## Safety Model\n\nDefault behavior is read-only.\n\nCodex must not send, forward, archive, delete, mark read/unread, change labels,\nor create drafts unless you explicitly ask.\n\nBefore any write, Codex should show:\n\n- account alias;\n- message or thread id;\n- intended action;\n- dry-run or preview output when available.\n\nThen it waits for approval.\n\n## Repository Layout\n\n```text\nAGENTS.md                     Agent contract for Codex\ndocs/mail-triage-policy.md    Living triage policy\ndocs/active-findings.md       Durable unresolved risks and follow-ups\nprompts/run-triage.md         Manual triage prompt\nprompts/automation.md         Recurring read-only prompt\nprompts/bootstrap.md          Prompt to recreate this setup elsewhere\nexamples/report.md            Example of a useful brief\n```\n\n## Design Opinion\n\nThe useful part of this setup is not automation. It is judgment.\n\nScripts can count unread messages and keyword-match \"urgent\". A good cockpit\nreads the thread, understands consequences, groups the boring stuff, and says:\n\"this one can cost you money\", \"this one needs a reply\", \"this one is just\nplatform confetti\".\n\nThat is the job.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanton88vlc%2Fmail-cockpit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanton88vlc%2Fmail-cockpit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanton88vlc%2Fmail-cockpit/lists"}