codex-multi-workspace 0.1.0

Run Codex CLI in Docker across saved single-folder or multi-folder workspaces.
Documentation
# Codex Workspace Project Plan

Last Updated: 2026-06-11

## Project Goal

Build `codex-ws`, a Rust CLI that launches Codex CLI inside a Docker runtime for
one or more project folders, while reusing local provider configuration and keeping
workspace conversation sessions under a predictable host path.

## Completed

- [x] Created the `codex-ws` Rust CLI with a `run` command for selecting a provider,
  workspace manifest, sessions root, and optional runtime image.
- [x] Loaded Codex provider configuration from the local cc-switch SQLite database using
  the real `settings_config` schema.
- [x] Added workspace manifest parsing for workspace name, folders, sandbox networking,
  optional runtime image, and Codex Universal language versions.
- [x] Validated workspace folders before launching Docker.
- [x] Built Docker launch construction for mounted workspace folders, provider config,
  sessions, optional skills, sandbox networking, runtime environment variables, and image
  selection.
- [x] Added the GHCR runtime image based on Codex Universal with Codex CLI,
  `bubblewrap`, and a wrapper entrypoint that runs Universal setup before Codex.
- [x] Supported runtime specs such as `golang:1.25.1` by mapping them to Codex Universal
  `CODEX_ENV_*` variables and validating against the supported version matrix.
- [x] Switched persistent workspace state to only
  `.codex-ws/<workspace>/sessions`, avoiding persistence of the full container
  `/root/.codex` directory.
- [x] Mounted generated provider auth/config files as run-scoped inputs under the workspace
  sessions root so Docker can access them on hosts with restricted shared paths.
- [x] Mounted host `~/.agents/skills` into the container read-only when the directory
  exists, while allowing startup without skills.
- [x] Added a workspace configuration registry under `~/.codex-ws/config/workspace`.
- [x] Added `workspace ls` for listing saved workspace manifests.
- [x] Added `workspace add <workspace-name>` for creating and editing a templated manifest.
- [x] Allowed `run --workspace <workspace-name>` to resolve saved workspace manifests.
- [x] Defaulted workspace sandbox networking to enabled so Codex CLI can reach the configured
  model provider.
- [x] Prepared crates.io package metadata for `codex-multi-workspace`.
- [x] Added a concise user-facing README covering install, workspace setup, runtime image,
  cc-switch, and Codex Universal usage.
- [x] Added tag-based GitHub Actions release publishing for GHCR and crates.io.

## Pending

- [ ] Publish the initial crate release.