codex-profiles

Tools & Infrastructure 💻 Shell ⚖️ MIT 🟢 Actively maintained
117 stars

codex-profiles is a dependency-free Bash wrapper that lets you run Codex CLI and ChatGPT desktop app with separate named profiles, each with its own local state (CODEX_HOME and Electron user data) without copying tokens. It solves the problem of managing multiple accounts (personal, work, client, etc.) on the same machine by isolating local state per profile. It is for developers who use Codex or ChatGPT with multiple accounts and need to keep their sessions, configs, and data separate.

✨ Key features

  • Named Codex CLI profiles with separate CODEX_HOME
  • Named ChatGPT desktop windows with separate Electron data on macOS
  • Share configuration files between profiles without sharing auth or sessions
  • Bind projects to profiles for automatic profile selection
  • Create color-coded macOS launcher apps for profiles
  • Diagnostics and status checks for local state

🎯 Use cases

  • Run Codex CLI with separate personal and work accounts
  • Open separate ChatGPT windows for different clients or projects on macOS
  • Bind a project directory to a specific profile for automatic selection
  • Share config.toml or AGENTS.md across profiles while keeping auth separate
  • Create distinct launcher icons for each profile in Finder or Dock

📦 Installation

🧰 Requirements: Requires Bash and Codex CLI; macOS for desktop app features. No API keys or accounts needed beyond those for Codex/ChatGPT.

Install

With npm:

npm install -g codex-profile

The npm package is singular. It installs both codex-profile and codex-profiles; the plural npm package belongs to another project.

With Homebrew:

brew install Ducksss/tap/codex-profile

With the standalone installer:

curl -fsSL https://raw.githubusercontent.com/Ducksss/codex-profiles/v0.10.0/install.sh \
  | CODEX_PROFILE_VERSION=v0.10.0 sh

With Nix:

nix run github:Ducksss/codex-profiles/v0.10.0
nix profile install github:Ducksss/codex-profiles/v0.10.0

From source:

git clone https://github.com/Ducksss/codex-profiles.git
cd codex-profiles
make install

Then verify the installation:

codex-profile doctor

🚀 Usage

Quick start

Create two Codex homes and authenticate their CLI sessions:

codex-profile init personal
codex-profile init work
codex-profile login personal
codex-profile login work

Run the upstream Codex CLI with either home:

codex-profile cli personal
codex-profile cli work exec "run tests and summarize failures"

On macOS, open the stock ChatGPT session or a named window with separate local state:

codex-profile init default
codex-profile app default ~/Dev/main-project
codex-profile app personal ~/Dev/personal-project
codex-profile app work ~/Dev/work-project

⚠️ Good to know

Local-state separation is not an account, OS, or server-side boundary; account equality is deliberately unverified, and the tool does not inspect tokens or account identifiers.

❓ FAQ

How do I create a new profile?

Use codex-profile init <name> to create a new profile. Only init creates profiles; other commands fail on uninitialized names.

Can I share configuration between profiles without sharing auth?

Yes, use codex-profile init <new> --share-with <existing> to symlink only allowlisted config files like config.toml and AGENTS.md, but never auth.json or sessions.

Does codex-profiles copy or parse auth.json?

No, it does not copy, parse, print, or migrate auth.json. It only sets separate CODEX_HOME directories.

How do I bind a project to a profile?

Use codex-profile workspace bind <path> <profile> to bind a directory. Then from that directory, codex-profile run uses the bound profile automatically.

📊 Repository

Stars★ 117
Forks🍴 10
Open issues🐛 0
Last commit🕒 Sep 4, 2026
Created📅 Apr 2026
Language💻 Shell
License⚖️ MIT

🤖 Overview, features, install steps and FAQ were generated from the project's README on Sep 4, 2026. Always check the original source before running commands.