{"id":48110237,"url":"https://github.com/jarcis-cy/codex-island-app","last_synced_at":"2026-04-09T21:01:26.537Z","repository":{"id":348872734,"uuid":"1200125379","full_name":"Jarcis-cy/codex-island-app","owner":"Jarcis-cy","description":"Dynamic Island-style macOS companion for Codex CLI with local session tracking, SSH remote hosts, approvals, and transcript-aware chat history.","archived":false,"fork":false,"pushed_at":"2026-04-06T15:49:48.000Z","size":8110,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-06T18:02:34.178Z","etag":null,"topics":["codex","codex-cli","developer-tools","dynamic-island","macos","notch","openai-codex","productivity","ssh","swift","swiftui","tmux"],"latest_commit_sha":null,"homepage":"https://github.com/Jarcis-cy/codex-island-app/releases/latest","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jarcis-cy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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-03T04:09:53.000Z","updated_at":"2026-04-06T15:49:53.000Z","dependencies_parsed_at":"2026-04-06T18:00:28.440Z","dependency_job_id":null,"html_url":"https://github.com/Jarcis-cy/codex-island-app","commit_stats":null,"previous_names":["jarcis-cy/codex-island-app"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Jarcis-cy/codex-island-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jarcis-cy%2Fcodex-island-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jarcis-cy%2Fcodex-island-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jarcis-cy%2Fcodex-island-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jarcis-cy%2Fcodex-island-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jarcis-cy","download_url":"https://codeload.github.com/Jarcis-cy/codex-island-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jarcis-cy%2Fcodex-island-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31524531,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","codex-cli","developer-tools","dynamic-island","macos","notch","openai-codex","productivity","ssh","swift","swiftui","tmux"],"created_at":"2026-04-04T16:03:17.621Z","updated_at":"2026-04-09T21:01:26.494Z","avatar_url":"https://github.com/Jarcis-cy.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"CodexIsland/Assets.xcassets/AppIcon.appiconset/icon_128x128.png\" alt=\"Codex Island logo\" width=\"100\" height=\"100\"\u003e\n  \u003ch1 align=\"center\"\u003eCodex Island\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    A Dynamic Island-style macOS companion for Codex CLI.\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"./README.zh-CN.md\"\u003e简体中文\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/Jarcis-cy/codex-island-app/releases/latest\"\u003eLatest Release\u003c/a\u003e\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cstrong\u003eKeep local and remote Codex sessions visible from the notch.\u003c/strong\u003e\u003cbr\u003e\n    Handle approvals, switch threads, and recover context without living in terminal tabs.\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    macOS 15.6+ · Local hooks · SSH remote hosts · Approval flows · Transcript-aware chat\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/media/codex-island-hero.png\" alt=\"Codex Island session overview\" width=\"920\"\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\nCodex Island is a macOS notch and menu bar companion for Codex CLI. It keeps local sessions visible, connects to remote hosts over SSH, and gives you a lightweight place to inspect chat state, approvals, and recent context without constant terminal context switches.\n\n## See It In Action\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cimg src=\"./docs/media/remote-workflow.gif\" alt=\"Remote Codex workflow in Codex Island\" width=\"100%\"\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cimg src=\"./docs/media/local-workflow.gif\" alt=\"Local Codex workflow in Codex Island\" width=\"100%\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd valign=\"top\"\u003e\n      \u003cstrong\u003eRemote workflow\u003c/strong\u003e\u003cbr\u003e\n      Connect to a remote machine, resume threads, and work through SSH-backed Codex sessions from the same UI.\n    \u003c/td\u003e\n    \u003ctd valign=\"top\"\u003e\n      \u003cstrong\u003eLocal workflow\u003c/strong\u003e\u003cbr\u003e\n      Track local sessions, surface plan-style interactions, and jump back into the right shell only when needed.\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Highlights\n\n- Watches Codex sessions through `~/.codex/hooks.json` and a local Unix socket.\n- Connects to remote machines over SSH and talks to `codex app-server` over stdio.\n- Shows recent conversation history with markdown rendering and active model/context details in chat headers.\n- Supports approval flows directly from the app UI.\n- Tracks multiple local sessions and remote threads, and lets you switch between them quickly.\n- Lets you save SSH targets, optional default working directories, and auto-connect remote hosts from the app.\n- Includes launch-at-login, screen selection, sound settings, and in-app updates.\n- Falls back gracefully on Macs without a physical notch.\n\n## What's New in 0.0.3\n\n- Moves much more of the local session flow onto a live local `codex app-server` connection instead of transcript-only fallback.\n- Adds local `/new` and `/resume`, so you can start a fresh local thread or reopen an older one from the app UI.\n- Surfaces local `/plan`, `/model`, and `/permissions` flows through the local app-server-backed chat experience.\n- Keeps local plan follow-up choices visible and answerable in the UI more reliably, including `\u003cproposed_plan\u003e`-style completions.\n- Tightens collapsed-notch status summaries, hover hit testing, prompt click handling, and debug-startup stability.\n\n## Requirements\n\n- macOS 15.6 or later\n- Codex CLI installed locally\n- SSH access to any remote machine you want to manage, with Codex CLI installed on that remote host\n- Accessibility permission if you want the app to interact with window focus behavior\n- `tmux` if you want tmux-aware messaging and approval workflows\n- `yabai` if you want window focusing integrations\n\n## Install\n\nDownload the latest release from GitHub, or build it locally with Xcode.\n\nFor a debug build:\n\n```bash\nxcodebuild -scheme CodexIsland -configuration Debug build\n```\n\nFor a release build:\n\n```bash\n./scripts/build.sh\n```\n\nThe exported app bundle is written to `build/export/Codex Island.app`.\n\n## Remote Hosts Over SSH\n\nOpen `Remote Hosts` from the notch menu to add an SSH target, an optional default working directory, and an auto-connect preference for each remote machine.\n\nWhen you connect a host, Codex Island launches:\n\n```bash\nssh -T -o BatchMode=yes \u003ctarget\u003e codex app-server --listen stdio://\n```\n\nThat means remote hosts currently expect non-interactive SSH authentication, and the remote machine must already have `codex` available on `PATH`. Once connected, you can list remote threads, start a new thread, reopen an existing thread, send messages, interrupt turns, and handle approvals from the app UI. The remote chat view supports both `/new` for explicitly starting a fresh thread and `/resume` for switching back to an older thread.\n\nRemote app-server diagnostics are disabled by default. After you enable `Remote Debug Logs` from the menu, the app writes JSONL diagnostics to `~/Library/Application Support/Codex Island/Logs/remote-app-server.jsonl`.\n\n## How It Works\n\nOn first launch, Codex Island installs a managed hook script into `~/.codex/hooks/` and updates `~/.codex/hooks.json`. The hook helper forwards local Codex hook events to the app over a Unix domain socket, and the app reconciles those events with transcript data to keep session state accurate.\n\nRemote hosts use a separate path: the app opens an SSH stdio transport to `codex app-server` on the target machine and keeps remote thread state alongside the local hooks-first session model.\n\nThe current architecture is still hooks-first inside the macOS app process. The `sidecar/` directory is a reserved Rust scaffold for future work around transcript parsing, state aggregation, and IPC.\n\n## Project Layout\n\n- `CodexIsland/App/`: app lifecycle and window bootstrap\n- `CodexIsland/Core/`: shared settings, geometry, and screen selection\n- `CodexIsland/Services/`: hooks, local session parsing, remote app-server management, tmux integration, updates, and window management\n- `CodexIsland/UI/`: notch views, menu UI, chat UI, and reusable components\n- `CodexIsland/Resources/`: bundled scripts such as `codex-island-state.py`\n- `scripts/`: build, signing, notarization, and release helpers\n- `sidecar/`: future Rust sidecar scaffold\n\n## Privacy\n\nThe app currently initializes Mixpanel for anonymous product analytics and Sparkle for app updates.\n\nTracked analytics are intended to cover app launch and session lifecycle metadata such as:\n\n- app version and build number\n- macOS version\n- detected Codex version\n- session start events\n\nThe repository does not claim to collect conversation content in analytics, but you should still review the source and decide whether that tradeoff matches your environment before distributing it broadly.\n\n## Development\n\nOpen the project in Xcode for day-to-day work. The repository also includes release automation for signing, notarization, DMG creation, appcast generation, and optional GitHub release publishing:\n\n```bash\n./scripts/create-release.sh\n```\n\nIf you change anything under `CodexIsland/Services/Hooks/` or `CodexIsland/Resources/codex-island-state.py`, treat it as user-impacting local environment behavior and verify it carefully.\n\n## Acknowledgements\n\nCodex Island builds on the original ideas and earlier implementation work from [`farouqaldori/claude-island`](https://github.com/farouqaldori/claude-island). Thanks to Farouq Aldori and the upstream contributors for laying the foundation this Codex-focused version continues from.\n\n## License\n\nApache 2.0. See [`LICENSE.md`](./LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjarcis-cy%2Fcodex-island-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjarcis-cy%2Fcodex-island-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjarcis-cy%2Fcodex-island-app/lists"}