A modern, multi-session GUI application for the Codex CLI built with Tauri v2, React, and TypeScript.
TLDR: Notepad + @file from FileTree + git diff + streaming chat + agent + mcp
- Run multiple independent chat sessions simultaneously
- Each session maintains its own configuration and context
- Switch between sessions without interrupting ongoing conversations
- Persistent session storage with automatic restoration on app restart
- Live streaming responses for immediate feedback
- Character-by-character message updates as AI generates responses
- No more waiting for complete responses - see results as they appear
- Visual indicators for active generation and thinking states
- Support for multiple AI providers (OpenAI, OSS via Ollama, Custom)
- Configurable models per session (GPT, Claude, Llama, etc.)
- Adjustable sandbox policies (read-only, workspace-write, full-access)
- Customizable approval policies for command execution
- Working directory selection for each session
- Clean, responsive interface built with shadcn/ui components
- Session management sidebar with visual status indicators
- Configuration panel with live preview
- Debug panel for monitoring session states
- Notepad-chat integration for seamless note-taking during conversations
- Enhanced markdown rendering with syntax highlighting for code blocks
- Persistent UI state and preferences
- Sandbox execution modes for safe code running
- Approval workflows for sensitive operations
- Configurable command execution policies
- Isolated processes per session for security
- Rust (latest stable)
- Node.js (v18+)
- Bun (recommended) or npm/yarn
- Codex CLI installed and configured
-
Clone the repository:
git clone https://github.com/milisp/codexia cd codexia -
Install dependencies:
bun install
-
Run the development server:
bun tauri dev
bun run build
bun tauri build- Click the "+" button in the session sidebar to create a new chat session
- Each session starts with an independent Codex process
- Configure working directory, model, and policies per session
- Switch between sessions by clicking on them in the sidebar
- Sessions continue running in the background when not active
- Close sessions using the "ร" button (this terminates the Codex process)
- Click the Settings icon to open the configuration dialog
- Changes apply to the currently active session
- Configurations are automatically saved and restored
- Use the Debug panel (bottom-right) to monitor running sessions
- View backend process status and frontend session states
- Sync session states between frontend and backend
- Zustand for state management with persistence
- shadcn/ui for UI components
- Tauri for native desktop integration
- Real-time event handling for streaming responses
- Multi-process management for concurrent Codex sessions
- JSON-RPC protocol communication with Codex CLI
- Async event streaming to frontend
- Resource cleanup and process lifecycle management
- Independent processes per chat session
- Configurable startup parameters per session
- Event isolation between sessions
- Graceful cleanup on session termination
- โ Interactive chat with AI assistants
- โ Code generation and editing in various languages
- โ File operations with sandbox controls
- โ Command execution with approval workflows
- โ Multiple AI providers (OpenAI, OSS models via Ollama)
- โ Working directory context for project-aware assistance
- โ Streaming responses for real-time interaction - by config show_raw_agent_reasoning=true
codexia/
โโโ src/ # React frontend source
โ โโโ components/ # UI components
โ โโโ hooks/ # Custom React hooks
โ โโโ store/ # Zustand state management
โ โโโ services/ # Business logic services
โ โโโ types/ # TypeScript type definitions
โโโ src-tauri/ # Rust backend source
โ โโโ src/
โ โ โโโ lib.rs # Main Tauri application
โ โ โโโ codex_client.rs # Codex process management
โ โโโ Cargo.toml # Rust dependencies
โโโ public/ # Static assets
โโโ package.json # Node.js dependencies
- Frontend: React 19, TypeScript, Zustand, shadcn/ui, Vite
- Backend: Rust, Tauri v2, Tokio async runtime
- Process Communication: JSON-RPC, stdin/stdout streams
- State Management: Zustand with persistence middleware
- UI Framework: shadcn/ui built on Radix UI and Tailwind CSS
# Start development server
bun tauri dev
# Build frontend only
bun run build
# Check Rust code
cd src-tauri && cargo check
# Format code
cd src-tauri && cargo fmt --all- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Plux one click @files from FileTree & notepad
- Claude code Build by Claude code
- codex for the Codex CLI
- Tauri for the excellent desktop app framework
- shadcn/ui for the beautiful UI components
- The open source community for the amazing tools and libraries
Built with โค๏ธ using Tauri, React, and Rust