This document covers both global and project-specific configuration for DockaShell.
DockaShell stores global settings in ~/.dockashell/config.json. This file controls system-wide behavior and default settings.
{
"projects": {
"directory": "~/dockashell-projects"
},
"tui": {
"display": {
"max_entries": 300
}
},
"logging": {
"traces": {
"session_timeout": "4h"
}
},
"remote_mcp": {
"enabled": false,
"port": 3333,
"auth": {
"username": "admin",
"password": "changeme123"
},
"cors": {
"origin": "*",
"credentials": true
},
"session": {
"timeout": "24h"
}
}
}projects.directory– Default directory where project files are stored (default:"~/dockashell-projects")
tui.display.max_entries– Maximum number of trace entries to display in the TUI log viewer (default:300)
logging.traces.session_timeout– Time between trace entries before starting a new session (default:"4h", formats:"2h","30m")
remote_mcp.enabled– Enable remote MCP server for multi-user access (default:false)remote_mcp.port– Port for remote MCP server (default:3333)
remote_mcp.auth.username– Username for authentication (default:"admin")remote_mcp.auth.password– Password for authentication (default:"changeme123"- should be changed)
remote_mcp.cors.origin– Allowed origins for CORS requests (default:"*")remote_mcp.cors.credentials– Allow credentials in CORS requests (default:true)
remote_mcp.session.timeout– Session timeout for authenticated users (default:"24h")
DockaShell stores each project's config in ~/.dockashell/projects/{name}/config.json. These JSON files define how containers are started and configured for each project.
name– Project namedescription– Optional descriptionimage– Docker image to use (defaults todockashell/default-dev:latest)mounts– List of host paths mounted into the containerports– Ports forwarded from host to containerenvironment– Environment variablesworking_dir– Default working directory inside the containershell– Login shellsecurity.max_execution_time– Maximum seconds for any command
{
"name": "web-app",
"description": "Node.js web application with hot reload",
"mounts": [
{
"host": "~/dockashell-projects/web-app",
"container": "/workspace",
"readonly": false
}
],
"ports": [
{ "host": 3000, "container": 3000 },
{ "host": 8080, "container": 8080 }
],
"environment": {
"NODE_ENV": "development"
},
"working_dir": "/workspace",
"shell": "/bin/bash",
"security": { "max_execution_time": 300 }
}{
"name": "legacy-app",
"image": "node:16-bullseye",
"mounts": [
{
"host": "~/dockashell-projects/legacy-app",
"container": "/workspace",
"readonly": false
}
],
"ports": [{ "host": 3000, "container": 3000 }],
"working_dir": "/workspace",
"shell": "/bin/bash"
}- Global Config:
~/.dockashell/config.json - Project Config:
~/.dockashell/projects/{name}/config.json - Trace Logs:
~/.dockashell/projects/{name}/traces/current.jsonl
Trace sessions rotate automatically when there are more than four hours between entries. If DockaShell restarts within this window, the same current.jsonl file continues to be used so history remains visible in the TUI. The timeout can be configured using the global logging.traces.session_timeout setting.