Codex Session Kanban is a static, privacy-aware review surface that turns local Codex CLI / AI-coding sessions into deduplicated task candidates.
The public Pages site is a fixture-only demo. Real .codex logs stay local or in a private repository.
It is not a generic Kanban board and it is not an agent runner. The core job is narrower: help a human quickly review what recent AI sessions were actually doing, which tasks are still active, which older sessions were superseded, and which manual board decisions must not be reverted by later AI sync.
Open the fixture-only public demo:
https://tenormusica2024.github.io/codex-session-kanban/
In the demo, try this flow:
- Review the Kanban candidates section.
- Promote a candidate into the recommended column.
- Open the card detail panel.
- Check Why this card exists, evidence categories, extraction timeline, and suppressed predecessor sessions.
- Move the card status and confirm it becomes a human override lock.
- Use
/,?,x,j/k,1-6,c, andbto test keyboard-first triage and handoff copying.
This is useful if you:
- run many Codex / AI-coding sessions and lose track of the real task state
- want an AI secretary to propose a board, but still treat human edits as authoritative
- need to distinguish "needs review", "blocked by user input", "still active", "done", and "dropped"
- care about why a card exists, not only that a transcript summary exists
- want a static/local-first workflow where private logs do not need to leave your machine
MIT. See LICENSE.
- Latest release: GitHub Releases
- Changelog: CHANGELOG.md
This public repository is fixture-only:
- no real
.codexsession logs - no local user paths
- no private repository data
- no Vercel bypass tokens
Real session data should stay local or in a private repository. The public demo and screenshots are generated from synthetic fixture data only.
- Intent-first task extraction: infer the real task from session context instead of using raw prompts like "check progress" or "review this".
- Topic conflict decomposition: separate setup checks, side quests, resolved blockers, and the current main task.
- Parallel tasks inside one repo: keep distinct work streams separate when the repo is the same but the deliverable differs.
- Cross-session task lineage: suppress stale predecessor sessions when a newer session clearly continues or supersedes the same task.
- Human override lock: when a user moves or edits a card, later AI sync should not silently revert that decision.
- Inspectable extraction: detail panels expose evidence categories, extraction timeline, suppressed predecessor sessions, and extraction debug hints.
- Static/private-safe distribution: public demos use fixture data only; real
.codexlogs stay local/private. - Provider import normalization: lightweight Claude Code / Cursor / Gemini-style exports can be normalized into the common review schema without adding agent execution scope.
- Fixture coverage diagnosis: public samples are checked for behavior coverage so new fixtures are added only for real extraction/lineage gaps.
- Lightweight prioritization stats: cards expose rough local text-unit estimates, high-activity badges, and large-session hints without becoming a cost dashboard.
- Private scheduled refresh: a separate git-ignored local workflow can scan real
.codexsessions without mixing private data into public fixture builds. - Representative public fixtures: synthetic examples cover topic conflict, same-repo parallel tasks, cross-session predecessor suppression, and non-Codex provider metadata.
Open:
https://tenormusica2024.github.io/codex-session-kanban/
npm run local:updateOr call the builder directly:
powershell -ExecutionPolicy Bypass -File .\codex_session_review\build_fixture_snapshot.ps1 -DistributionOutput:
codex_session_review/fixture_snapshot/index.html
For a private/local board from your own .codex sessions:
git clone https://github.com/Tenormusica2024/codex-session-kanban.git
cd codex-session-kanban
npm install
npm run private:update:openThis writes the real-session surface under codex_session_review/local_private_review/, which is git-ignored. Do not copy that output into the public fixture build.
npm install
npm run release:checkTo also verify the deployed Pages URL:
npm run release:check:pages- Demo usage guide
- Downloadable artifact usage
- Architecture / data flow
- Import schema
- Provider adapter review
- Fixture coverage diagnosis
- Testing guide
- Local update helper
- Roadmap
- Public release checklist
- Competitive positioning
- Product TODO / adoption policy
- Distribution build notes
- GitHub distribution notes
Recommended full local check:
powershell -NoProfile -ExecutionPolicy Bypass -File .\codex_session_review\run_public_release_checks.ps1Or via npm:
npm run release:checkStatic artifact check:
python .\codex_session_review\smoke_public_build.py .\codex_session_review\fixture_snapshot\index.html --docs-dir .\codex_session_review\fixture_snapshot\docs --distributionDownloadable package check:
npm run package:distribution
npm run smoke:packageBrowser operation and visible-text check:
npm install
npm run smoke:browser:local
npm run smoke:browser:mobile:local
npm run smoke:browser:narrow:localRegenerate public README screenshots from fixture data:
npm run local:update
npm run screenshots:updateLightweight public-fixture refresh helper:
npm run local:update
npm run local:update:open
npm run local:update:fullPrivate/local real-session refresh helper:
npm run private:update
npm run private:update:open
npm run private:update:fullProvider import diagnosis for observed export shapes:
npm run provider:diagnoseSee Private scheduled refresh before wiring this into Windows Task Scheduler.
To verify the public Pages URL:
npm run smoke:browser
npm run smoke:browser:mobileFor the full release check including the deployed Pages URL:
npm run release:check:pagesSee Testing guide for details.
The workflow .github/workflows/codex-session-kanban-pages.yml builds the fixture with --distribution and can deploy to GitHub Pages.
For public repositories, set:
- Settings → Pages → Source: GitHub Actions
Then push to master or run the workflow manually with deploy_pages=true.




