Launch, monitor, and control autonomous AI development agents with real-time terminal access and Git integration
π Setup β’ π Quick Start β’ β¨ Features β’ π API Docs β’ π€ Contributing
AI-powered development agent orchestration platform
Deckmind is a modern web-based cockpit for launching, monitoring, and controlling multiple autonomous development agents. Each agent runs in a Docker container with full development tools, follows Git workflows, and provides real-time terminal access and code editing capabilities.
- π Launch Agents: Start development agents with custom instructions and repository URLs
- π€ Multiple AI Models: Support for Claude (Anthropic), Codex (OpenAI), and Gemini (Google) agents
- π Real-time Monitoring: Track agent status, logs, and performance metrics
- π₯οΈ Interactive Terminal: Direct terminal access to running agents via WebSocket
- π Code Editor: Integrated file browser and code editor with syntax highlighting
- π Git Integration: Full Git workflow support (status, commit, push, pull)
- π¨ Modern UI: Beautiful Material-UI interface with dark/light theme support
- π³ Docker Native: Containerized architecture for easy deployment
- π§ Extensible: Plugin system for custom agent types and tools

Click image to view full size

Click image to view full size
- Frontend: React TypeScript application with Material-UI
- Backend: Node.js Express API server
- Agent Runtime: Ubuntu-based Docker containers with development tools
- AI Models: Support for Claude (Anthropic), Codex (OpenAI), and Gemini (Google) agents
- Database: File-based storage (easily replaceable with any database)
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Web Browser ββββββ Express API ββββββ Docker Engine β
β (React App) β β (Node.js) β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β File Browser β β Agent Mgmt β β Agent β
β Code Editor β β Workspaces β β Containers β
β Git Controls β β Projects β β (Ubuntu + AI) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
Before building the agent Docker images, you need to configure the authentication credentials for each AI provider.
-
Copy Claude credentials:
# Copy your Claude configuration from your home directory cp ~/.claude.json agents-homes/claude-agent-default/ cp -r ~/.claude agents-homes/claude-agent-default/
-
Configure Git:
# Edit the Git configuration nano agents-homes/claude-agent-default/.gitconfig
Add your Git user information:
[user] name = Your Full Name email = your.email@example.com
-
Copy Codex credentials:
# Copy your Codex authentication file mkdir -p agents-homes/codex-agent-default/.codex/ cp ~/.codex/auth.json agents-homes/codex-agent-default/.codex/
-
Configure Git:
# Create Git configuration nano agents-homes/codex-agent-default/.gitconfig
Add your Git user information:
[user] name = Your Full Name email = your.email@example.com
-
Copy Gemini credentials:
# Copy your Gemini configuration cp ~/.gemini.json agents-homes/gemini-agent-default/
-
Configure Git:
# Edit the Git configuration nano agents-homes/gemini-agent-default/.gitconfig
Add your Git user information:
[user] name = Your Full Name email = your.email@example.com
- Security: Never commit these credential files to version control
- Dynamic Mounting: Credentials are now mounted at runtime instead of being copied into Docker images
- No Rebuild Required: You can update credentials without rebuilding Docker images
- Multiple Users: Each user should set up their own credentials in the agent home directories
- Permissions: Ensure credential files have appropriate read permissions for the Docker daemon
Key Changes:
- Agent credentials are no longer copied into Docker images during build
- Credentials are mounted at runtime from the host
agents/
directory - This allows for dynamic credential management without image rebuilds
- Each agent container mounts its specific home directory as read-only
Benefits:
- β No need to rebuild images when credentials change
- β Better security through runtime credential injection
- β Easier credential rotation and management
- β Smaller, more generic Docker images
- β Better separation of concerns between images and runtime configuration
Environment Variable:
- Set
AGENT_HOMES_ROOT
to specify the path to your agent home directories - Set
AGENT_HOMES_ROOT
to specify the path to your agent home directories on the server (inside docker container running the server, see docker-compose.yml) - Set
AGENT_HOMES_ROOT_MOUNT_PATH
to specify the absolute path to your agent home directories from the host system - This is required when mounting agent home directories as volumes in Docker containers
- See
.env.example
for the correct format and example values
Custom Environment Variables (.agentrc):
Each agent supports a .agentrc
file in its home directory that is sourced before the tmux terminal session starts. This allows you to set custom environment variables for individual agents:
# Example .agentrc file
export CUSTOM_VAR="value"
export DEBUG_MODE="true"
export API_KEY="your-key-here"
The .agentrc
mechanism provides flexibility for agent-specific configuration without modifying Docker images.
Deckmind uses a structured approach to manage projects and agent workspaces, ensuring clean separation between source repositories and agent working environments.
Set these environment variables in server/.env
:
# Directory containing your local Git repositories (source projects)
PROJECTS_ROOT=/path/to/your/projects
# Directory where agent workspaces will be created
WORKSPACES_DIR=/path/to/workspaces
Example:
PROJECTS_ROOT=/home/user/projects
WORKSPACES_DIR=/home/user/deckmind-workspaces
All directories in PROJECTS_ROOT
must be local Git repositories:
/home/user/projects/
βββ my-web-app/ # Must be a Git repo
β βββ .git/
β βββ src/
β βββ package.json
βββ api-service/ # Must be a Git repo
β βββ .git/
β βββ server.js
βββ mobile-app/ # Must be a Git repo
βββ .git/
βββ ios/
- User selects a project from the dropdown (populated from
PROJECTS_ROOT
) - Deckmind validates the selected directory is a valid Git repository
- Server creates unique workspace:
WORKSPACES_DIR/{agentId}/
- Clones the selected project:
WORKSPACES_DIR/{agentId}/repo/
- Creates feature branch:
feature/{branchSlug}
- Writes instructions to:
WORKSPACES_DIR/{agentId}/INSTRUCTIONS.md
- Docker container mounts the workspace:
/workspace β WORKSPACES_DIR/{agentId}
- Agent reads instructions from
/workspace/INSTRUCTIONS.md
- Agent works in
/workspace/repo/
(the cloned repository) - Agent executes tasks using Claude or Codex AI
- Agent makes changes to files in
/workspace/repo/
- Agent commits changes with descriptive messages
- Agent can push changes back to origin (optional)
- Workspace remains available for inspection via the UI
- Files can be edited through the web interface
- Git status, commits, and pushes can be performed
- Workspace is cleaned up when agent is stopped
WORKSPACES_DIR/
βββ abc123-def456/ # Agent workspace
βββ repo/ # Cloned Git repository
β βββ .git/
β βββ src/
β βββ README.md
β βββ package.json
βββ INSTRUCTIONS.md # Agent instructions
βββ .git/ # Git repo for workspace
- Isolation: Each agent works in its own clean workspace
- Safety: Source repositories are never modified directly
- Persistence: Workspaces remain accessible after agent completion
- Collaboration: Multiple agents can work on the same project simultaneously
- Version Control: Full Git history tracking for all changes
The agent container uses this volume mount:
-v WORKSPACES_DIR/{agentId}:/workspace:rw
This gives the agent full access to:
/workspace/repo/
- The cloned repository/workspace/INSTRUCTIONS.md
- Task instructions
Welcome to Deckmind! This guide will help you get started with the AI-powered development agent orchestration platform. We'll walk through setting up everything you need to launch and manage autonomous AI development agents.
Before we begin, make sure you have the following installed on your system:
- Docker and Docker Compose - For containerized deployment
- Node.js 18+ and npm - For development (optional)
- Git - For version control operations
- Internet connection - Required for AI model access and package downloads
First, let's clone the Deckmind repository to your local machine:
git clone https://github.com/mwhesse/deckmind.git
cd deckmind
Deckmind needs some configuration to know where your projects are and how to access AI services:
# Copy the environment template
cp .env.example .env
# Open the file and configure your settings
nano .env
Important settings to configure:
- Set your AI API keys (
ANTHROPIC_API_KEY
,OPENAI_API_KEY
,GEMINI_API_KEY
) - Configure
PROJECTS_ROOT
to point to your local Git repositories - Set
AGENT_HOMES_ROOT_MOUNT_PATH
to the absolute path of your agent-homes directory on the host system - Configure
WORKSPACES_DIR
for agent working directories
Now let's build the main Deckmind server that includes both the backend API and frontend:
# Build the server image (this automatically builds the React client too)
docker build -t deckmind/server:latest .
Deckmind supports multiple AI models. Let's build the agent images for the ones you want to use:
# Build Claude agent (Anthropic)
docker build -t deckmind/claude-agent:latest ./agents/claude-agent
# Build Codex agent (OpenAI)
docker build -t deckmind/codex-agent:latest ./agents/codex-agent
# Build Gemini agent (Google)
docker build -t deckmind/gemini-agent:latest ./agents/gemini-agent
Each agent needs its own home directory with credentials and configuration. Follow the detailed setup instructions in the agent-homes README files:
agent-homes/claude-agent-default/README.md
- For Claude agentsagent-homes/codex-agent-default/README.md
- For Codex agentsagent-homes/gemini-agent-default/README.md
- For Gemini agents
This step is crucial for proper agent authentication and Git operations.
Everything is ready! Let's start the Deckmind server using Docker Compose:
# Start all services
docker compose up --build
Alternative: Run in background
docker compose up -d --build
Stop the services
docker compose down
Open your web browser and navigate to:
http://localhost:8088
You should now see the Deckmind dashboard where you can launch and manage your AI development agents!
Congratulations! You now have a fully functional Deckmind installation. You can:
- Launch AI agents for different development tasks
- Monitor agent progress in real-time
- Access interactive terminals for each running agent
- Edit code directly in the web interface
- Manage Git operations (commit, push, pull)
- Work with multiple projects simultaneously
If you encounter any issues:
- Check Docker: Ensure Docker is running and you have sufficient permissions
- Verify environment variables: Double-check your
.env
file settings - Agent homes: Make sure agent home directories are properly configured
- Network access: Ensure internet connectivity for AI model access
- Logs: Check Docker container logs for detailed error messages
- Try launching your first agent with a simple task
- Explore the different AI models available
- Set up multiple projects in your
PROJECTS_ROOT
directory - Customize agent configurations for your workflow
For development with hot reloading and separate client/server processes:
Terminal 1 - Server:
cd server
npm install
npm run dev # Runs on port 8088
Terminal 2 - Client:
cd client
npm install
npm start # Runs on port 3000 with hot reloading
Terminal 3 - Agent Images (optional):
docker build -t deckmind/claude-agent:latest ./agents/claude-agent
docker build -t deckmind/codex-agent:latest ./agents/codex-agent
docker build -t deckmind/gemini-agent:latest ./agents/gemini-agent
Access:
- React Client:
http://localhost:3000
(with hot reloading) - API Server:
http://localhost:8088
(API only)
Docker Compose (optional):
- See
docker-compose.yml
to run the server with a single command:docker compose up --build
- Select a project from the dropdown (or enter a Git repository URL)
- Choose an agent type: Claude (Anthropic) or Codex (OpenAI)
- Enter a branch slug (e.g.,
add-user-auth
) - Provide instructions for the agent
- Click "Launch Agent"
- Terminal Access: Click on any running agent to open the workspace
- File Browser: Navigate through the project files in the left panel
- Code Editor: Click on files to edit them with syntax highlighting
- Git Operations: Use the Git panel to commit and push changes
- Stop Agent: Use the stop button to terminate an agent
Implement user authentication with JWT tokens:
1. Create login/register API endpoints
2. Add password hashing with bcrypt
3. Implement JWT token generation and validation
4. Add authentication middleware
5. Create protected routes
6. Add logout functionality
Variable | Description | Default |
---|---|---|
PORT |
Server port | 8088 |
CLAUDE_AGENT_IMAGE |
Docker image for Claude agents | deckmind/claude-agent:latest |
CODEX_AGENT_IMAGE |
Docker image for Codex agents | deckmind/codex-agent:latest |
GEMINI_AGENT_IMAGE |
Docker image for Gemini agents | deckmind/gemini-agent:latest |
PROJECTS_ROOT |
Local projects directory | /host/projects |
WORKSPACES_DIR |
Agent workspaces directory | /host/workspaces |
AGENT_HOMES_ROOT |
Path to agent home directory for the server (in docker container, see docker-compose.yml) | Required for selecting an agent home profile to start an agent |
AGENT_HOMES_ROOT_MOUNT_PATH |
Absolute path to agent home directories on host | Required for volume mounting |
ANTHROPIC_API_KEY |
Claude API key | Required |
OPENAI_API_KEY |
OpenAI API key | Optional |
GEMINI_API_KEY |
Gemini API key | Optional |
Agents are configured through environment variables passed to containers:
AGENT_INSTRUCTIONS
: Task description for the agentAGENT_ID
: Unique identifier for the agentFEATURE_BRANCH
: Git branch to work onGIT_USERNAME
: Git user name for commitsGIT_EMAIL
: Git email for commits
List all agents
[
{
"id": "abc123",
"name": "deckmind-add-user-auth-abc123",
"state": "running",
"status": "Up 5 minutes",
"agentId": "abc123",
"agentType": "claude",
"repoUrl": "/path/to/project",
"branchSlug": "add-user-auth",
"port": null
}
]
Launch new agent
{
"repoUrl": "/path/to/project",
"branchSlug": "feature-name",
"agentType": "claude",
"instructions": "Implement user authentication..."
}
Parameters:
repoUrl
(string, required): Path to the Git repositorybranchSlug
(string, required): Slug for the feature branchagentType
(string, optional): "claude" or "codex" (default: "claude")instructions
(string, optional): Task description for the agent
Get agent details
Stop agent
Get agent logs
List available projects
{
"projects": [
"/path/to/project1",
"/path/to/project2"
]
}
Get file tree for agent workspace
Get file contents
Update file contents
Commit changes
Push changes
deckmind/
βββ client/ # React frontend
β βββ src/
β β βββ components/ # React components
β β βββ contexts/ # React contexts
β β βββ types/ # TypeScript types
β βββ public/
βββ server/ # Node.js backend
β βββ src/
β β βββ routes/ # API routes
β β βββ middleware/ # Express middleware
β βββ public/ # Static files
βββ claude-agent/ # Docker agent image
β βββ Dockerfile
β βββ scripts/
βββ docker-compose.yml
# Terminal 1: Start the React development server
cd client && npm start
# Terminal 2: Start the Node.js development server
cd server && npm run dev
# Terminal 3: Build agent image (if needed)
docker build -t deckmind/agent:latest ./claude-agent
# Build and run everything with Docker Compose
docker compose up --build
# Or build individual components:
# Build React app
cd client && npm run build
# Build server with client included
docker build -t deckmind/server:latest .
# Build agent image
docker build -t deckmind/agent:latest ./claude-agent
The production setup uses a unified Docker container that includes both the built React client and the Node.js server:
# Quick start with Docker Compose
docker compose up --build
# Or build and run manually
docker build -t deckmind/server:latest .
docker run -p 8088:8088 --env-file server/.env deckmind/server:latest
# Access the application at http://localhost:8088
Container Architecture:
- Multi-stage build: Separate build stages for client and server optimization
- Security: Non-root user execution with dedicated deckmind user
- Health checks: Built-in health monitoring at
/api/health
- Single container: Client and server packaged together for simplicity
- Optimized build: .dockerignore reduces build context from 372MB to ~4KB
- Production ready: TypeScript compilation and minified assets
Build Output:
- Client bundle: 223.45 kB (gzipped)
- CSS bundle: 931 B (gzipped)
- Total image size: ~250MB (includes Node.js runtime and dependencies)
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Clone your fork:
git clone https://github.com/yourusername/deckmind.git
- Install dependencies:
npm install
(in both client and server directories) - Start development servers:
npm run dev
- Make your changes
- Run tests:
npm test
- Submit a pull request
- Use TypeScript for all new code
- Follow ESLint configuration
- Use conventional commits
- Write tests for new features
This project is licensed under the MIT License - see the LICENSE file for details.
- Anthropic for Claude AI
- OpenAI for GPT models
- Docker for containerization
- Material-UI for the UI framework
- π Issue Tracker
- π¬ Discussions
Deckmind - Revolutionizing development workflows with AI-powered agents.