Kosmos is a local-first orchestration hub for software work. It combines a lightweight Kanban workflow, REST API, real-time WebSocket events, and an embedded dashboard so you can coordinate projects and tasks from one place.
Main landing page with project cards, summary stats, global search, and quick actions.
Project board split into todo, progress, qa, and done columns. Tasks can be dragged between columns to trigger workflow transitions.
Detailed task view used to inspect title, state, ownership, priority, and execution context.
Real-time feed powered by WebSocket events to monitor platform activity while tasks move through the workflow.
- REST API for projects, tasks, transitions, comments, artifacts, settings, metrics, and workflow cycle
- WebSocket broadcast channel for real-time dashboard updates
- Embedded frontend served by the same process
- Deterministic Kanban cycle (
todo -> progress -> qa -> done) - Optional LLM-backed agent chat endpoint (disabled by default)
- Dynamic subagent discovery from profile directories
./start.shpython -m src.backend --host 0.0.0.0 --port 18794battlestation --host 0.0.0.0 --port 18794The CLI command remains battlestation for compatibility during the branding migration.
Open dashboard:
http://localhost:18794/Build frontend bundle (if needed):
npm run build --prefix src/frontendKOSMOS_CORS_ALLOWED_ORIGINS: comma-separated CORS allowlist (default*)- Example:
KOSMOS_CORS_ALLOWED_ORIGINS=http://localhost:3000,https://dashboard.example.com
- Example:
KOSMOS_API_TOKEN: when set, all/api/*routes require authentication- Allowed headers:
Authorization: Bearer <token>,X-Kosmos-Token: <token>, or legacyX-Battlestation-Token: <token> /healthand/wsremain public
- Allowed headers:
KOSMOS_ENABLE_AGENT_CHAT: controls/api/agents/{id}/chatendpoint (defaultfalse)- Set to
trueonly if you intentionally want LLM-backed chat calls
- Set to
OLLAMA_VERIFY_TLS: enable/disable TLS verification for Ollama HTTP calls (defaulttrue)- Accepted values:
true|false|1|0|yes|no
- Accepted values:
- Main DB default:
~/.kosmos/kosmos.db(falls back to legacy~/.battlestation/battlestation.dbif present) - Artifact storage default:
~/.kosmos/artifacts/(falls back to legacy~/.battlestation/artifacts/if present)
- REST:
http://localhost:18794/api - Health:
http://localhost:18794/health - WebSocket:
ws://localhost:18795andws://localhost:18794/ws
.
├── src/
│ ├── agents/
│ │ ├── agent.py
│ │ ├── personalities.py
│ │ ├── subagents/
│ │ │ ├── base.py
│ │ │ └── factory.py
│ │ └── profiles/
│ │ ├── kosmos/
│ │ ├── vicks/
│ │ └── wedge/
│ ├── backend/
│ │ ├── api.py
│ │ ├── database.py
│ │ ├── server.py
│ │ ├── workflow.py
│ │ └── __main__.py
│ ├── frontend/
│ │ ├── src/
│ │ └── dist/
│ └── __init__.py
├── tests/
├── pyproject.toml
└── start.sh
python3 -m venv .venv
.venv/bin/python -m pip install -e .[test]
.venv/bin/pytestAgent behavior is externalized under src/agents/profiles/.
- One folder per agent id (dynamic discovery)
kosmosis the orchestrator id- Any other profile folder becomes a valid subagent id automatically
- Core docs per agent:
PROFILE.md,SOUL.md,WORKFLOW.md,STYLE.md,GUARDRAILS.md,MEMORY.md PROFILE.mdfront matter can override:name,role,description,model,temperature,top_p,max_tokens- Prompt assembly order:
PROFILEbody ->SOUL->WORKFLOW->STYLE->GUARDRAILS->MEMORY-> extra*.mdfiles alphabetically
| Agent | Role | Description |
|---|---|---|
| Kosmos | Orchestrator | The strategic leader. Receives tasks, breaks them down, delegates to subagents (Vicks/Wedge/any), monitors progress, and coordinates the workflow. It does not write code directly—its job is to orchestrate. |
| Vicks | Developer | The pragmatic implementer. Writes, fixes, and refactors code. Takes tasks from Kosmos, executes the work, commits changes, and moves tasks to QA when done. |
| Wedge | QA Engineer | The quality gatekeeper. Reviews code from Vicks, runs tests, validates requirements, and either approves (with qa approved comment) or rejects back to Vicks (with structured qa_rejection payload). |
How they work together:
- Kosmos creates tasks and assigns them to Vicks.
- Vicks implements the feature, writes tests, and transitions to
qa. - Wedge validates in QA. If something is missing, sends the task back to
progresswith rejection context. - Once Wedge approves, a human reviewer does final
approve_qa, and Kosmos closes the task todone.
npm run build --prefix src/frontend
.venv/bin/pytest -q
.venv/bin/pytest --cov --cov-report=termMIT



