Skip to content

Refactor CI/CD pipeline and introduce Coeadapt Launcher#160

Open
alexander-acker wants to merge 366 commits intokasmtech:developfrom
alexander-acker:claude/launch-coeadapt-integration-HhX9p
Open

Refactor CI/CD pipeline and introduce Coeadapt Launcher#160
alexander-acker wants to merge 366 commits intokasmtech:developfrom
alexander-acker:claude/launch-coeadapt-integration-HhX9p

Conversation

@alexander-acker
Copy link

Summary

This PR introduces a major restructuring of the CI/CD infrastructure and adds the Coeadapt Launcher—a cross-platform desktop application for managing the Career-Box workspace. The changes modernize the build system, update base images, and establish the foundation for CoeAdapt platform integration.

Key Changes

CI/CD Infrastructure

  • Simplified .gitlab-ci.yml: Reduced from 1049 to 90 lines by extracting job definitions into a templated system
  • New template system: Added ci-scripts/template-vars.yaml (930 lines) defining all image metadata, build configurations, and change detection rules
  • Template generation: Added ci-scripts/template-gitlab.py to dynamically generate CI jobs from YAML configuration
  • Modular build scripts: Created ci-scripts/build.sh, ci-scripts/test.sh, ci-scripts/manifest.sh, and ci-scripts/app-layer.sh for reusable build logic
  • Weekly manifest job: Added ci-scripts/weekly-manifest.sh for periodic image validation

Coeadapt Launcher (New Desktop App)

  • Tauri v2 + React + TypeScript: Full-featured cross-platform launcher at coeadapt-launcher/
  • Core modules:
    • Docker/Podman detection and runtime management (src-tauri/src/docker.rs, src-tauri/src/container.rs)
    • Disk space monitoring (src-tauri/src/disk.rs)
    • SSL certificate management (src-tauri/src/ssl.rs)
    • Claude integration and MCP server support (src-tauri/src/claude.rs, src-tauri/src/mcp.rs)
    • Health monitoring (src-tauri/src/health.rs)
  • UI Pages: Setup wizard, Dashboard, Settings, Chat, Claude configuration, Login
  • MCP Server: Workspace tools for filesystem, applications, commands, screenshots, and progress tracking
  • API Client: Typed Clerk JWT + device token authentication with automatic retry logic

Base Image Updates

  • Deprecated: Removed Focal (Ubuntu 20.04), Alpine 3.17, CentOS 7, Oracle 7, Fedora 37, Parrot 5, Remnux
  • Added: Ubuntu Noble, Debian Bookworm/Trixie, Alpine 3.19/3.20/3.21, Fedora 39/40/41, Parrot 6, RHEL 9, KasmOS, Zorin
  • Updated Dockerfiles: All application layer images now reference core-ubuntu-jammy or newer bases instead of Focal

Documentation & Configuration

  • New docs: LAUNCH_PLAN.md (Career-Box launch roadmap), SECURITY.md (hardening audit), CONTRIBUTING.md
  • Updated README: Rebranded from "Workspaces Images" to "Career-Box" with project overview
  • New image docs: Added README and demo files for new images (Cyberbro, Forensic OSINT, Spiderfoot, Nessus, Obsidian, etc.)

Security & Hardening

  • Chrome policy: Added src/common/chrome-managed-policies/urlblocklist.json to block file:// URLs
  • Firefox hardening: Enhanced src/alpine/install/firefox/install_firefox.sh with additional security settings
  • Dockerfile cleanup: Removed unnecessary environment variables and streamlined base image configurations

Minor Updates

  • Updated Docker image versions in .gitlab-ci.yml (24.0.6 → 28.0.0)
  • Added .gitignore for Node.js and build artifacts
  • Updated OpenSUSE package manager cleanup in install scripts
  • Added Terraform installation script for Alpine

Notable Implementation Details

  • CI templating: The new system uses Jinja2 to generate 347-line GitLab CI configuration from a single YAML source of truth, reducing duplication and improving maintainability
  • Standalone mode: Launcher supports both authenticated (Clerk)

https://claude.ai/code/session_01UYQ5A1EssptXBdHVFFHcE6

mattmcclaskey and others added 30 commits July 5, 2024 11:47
KASM-6191 Update slack download location

Closes KASM-6191

See merge request kasm-technologies/internal/workspaces-images!189
KASM-5955 kasmos readme

Closes KASM-5955

See merge request kasm-technologies/internal/workspaces-images!191
KASM-6265 Add Chrome to telegram image

Closes KASM-6265

See merge request kasm-technologies/internal/workspaces-images!192
KASM-6300 Add Chrome to vscode

Closes KASM-6300

See merge request kasm-technologies/internal/workspaces-images!193
KASM-6299 Disable chrome privacy and search engine nags

Closes KASM-6299

See merge request kasm-technologies/internal/workspaces-images!194
Remove EOL images
KASM-6444 update pathing for retroarch init

See merge request kasm-technologies/internal/workspaces-images!195
KASM-6388

See merge request kasm-technologies/internal/workspaces-images!197
KASM-6450 rebase retroarch to Jammy and update config

Closes KASM-6450

See merge request kasm-technologies/internal/workspaces-images!198
KASM-6504 update demo button

Closes KASM-6504

See merge request kasm-technologies/internal/workspaces-images!199
KASM-6476 update gitlab ci variables

Closes KASM-6476

See merge request kasm-technologies/internal/workspaces-images!200
Resolve KASM-6543 "Feature/ add chromium alpine"

Closes KASM-6543

See merge request kasm-technologies/internal/workspaces-images!201
…t-working-properly-for-some-workspace' into 'develop'

Resolve KASM-6527 "Dockerhub readme job in workspaces images isnt working properly for some workspace"

Closes KASM-6527

See merge request kasm-technologies/internal/workspaces-images!204
KASM-6626 Template BASE_TAG in ci template to account for variable

See merge request kasm-technologies/internal/workspaces-images!208
Richard Koliser and others added 30 commits December 16, 2025 15:47
… into 'develop'

KASM-7938 fix sublime text installation

Closes KASM-7938

See merge request kasm-technologies/internal/workspaces-images!375
KASM-7979 fix dind images

Closes KASM-7979

See merge request kasm-technologies/internal/workspaces-images!382
…elop' into 'develop'

KASM-8049 fix slack installation on opensuse

Closes KASM-8049

See merge request kasm-technologies/internal/workspaces-images!391
…develop'

KASM-8051 pin pinta version to 3.0.5

Closes KASM-8051

See merge request kasm-technologies/internal/workspaces-images!395
… scripts, and update Kasm Firefox Dockerfile.
…g application management, command execution, filesystem access, and environment provisioning scripts.
…health checks, and system tray functionality.
Rewrite README with full project narrative — what Career-Box is, how
Kasm Workspaces and OpenClaw combine to create an AI-powered career
workspace, architecture diagrams, 80+ app catalog, and quick start
guide with screenshots.

Security hardening across upstream Kasm scripts: remove gateway auth
bypass, eliminate passwordless sudo, secure VPN credentials, enforce
TLS validation, lock services to localhost, fix CI SSH key permissions,
and harden OpenClaw config directory.

Refine the CoeAdapt Launcher UI: polished components, settings page
with AI/Workspace/General tabs, toggle switches, improved setup wizard,
MCP health monitoring, and branding assets.

Add CONTRIBUTING.md, update LICENSE.md with dual Kasm/CoeAdapt
copyright, clean .gitignore to exclude dev artifacts, and remove
internal spec document.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Standardize brand casing from "CoeAdapt" to "Coeadapt" in all
user-facing strings, config files, documentation, Cargo.toml,
tauri.conf.json, and MCP server output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The MCP sidecar binary (coeadapt-mcp-x86_64-pc-windows-msvc.exe) was
committed to git history, exceeding GitHub's 100MB file size limit.
Purged from all history with git-filter-repo. Added .gitkeep so the
binaries/ directory exists for local builds while contents stay ignored.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the sparse build instructions with a proper "For developers"
section that orients new contributors — explains the two halves of
the project (launcher vs workspace images), setup steps, where the
MCP sidecar binary goes, and a "where to start" table pointing to
the right directories by interest area.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Welcome new contributors with the why behind Career-Box — the
responsibility to ensure no one is unequipped for the age of AI,
the belief that meaningful work is deeply personal and worth
protecting, and the vision of AI as the great equalizer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add settings store defaults (memory, password, auto-start flags),
fix toggle switch off-state color, and add missing CSS custom
properties for accent and tertiary text colors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…, chat functionality, and Tauri backend integration.
…ction status, and SSL certificate management.
… build, CLI, gateway, and system integration.
Six-phase plan covering foundation/infrastructure, CoeAdapt API
integration, workspace image build, distribution/auto-update,
quality/security, and launch operations. Includes current state
assessment, risk register, success metrics, and dependency graph.

https://claude.ai/code/session_01UYQ5A1EssptXBdHVFFHcE6
…vices

Implement two lightweight Python services that run inside the Kasm workspace
container to enable automatic progress tracking and full computer control
from the AI agent:

VM-side services (src/ubuntu/install/coeadapt-agent/):
- Progress tracker (port 7700): Persistent JSON store for career activities,
  goals, skills, milestones, assessments, and daily streaks. Includes
  optional platform sync and a full REST API.
- Computer-use service (port 7701): X11 automation via xdotool for mouse
  movement, clicks, drags, scrolling, keyboard input, window management,
  and screenshot capture with region support.
- Install script with XFCE autostart, health checks, and respawn loop.

MCP server tools (coeadapt-launcher/mcp-server/):
- 12 new computer-use tools: screenshot, mouse move/click/scroll/drag,
  keyboard type/press, window list/focus/active, screen size, mouse position.
- 8 new progress tools: log_activity, create_goal, update_goal, record_skill,
  update_skill, add_milestone, record_assessment, get_progress_summary.
- Proxy endpoints (/progress-summary, /agent-health) for dashboard access.
- Updated take_screenshot to prefer the computer-use service with fallback.

Launcher frontend (coeadapt-launcher/src/):
- ProgressCard component showing completion %, streak, stats grid, and
  agent service health indicators.
- useProgress hook polling the MCP proxy endpoints.
- Full TypeScript types for progress data model.
- Dashboard integration showing progress when workspace is running.

https://claude.ai/code/session_015jp8qNZT6kWZ8TtehTg3Uy
…icts

Restore ci-scripts/test.sh to the upstream develop version, reverting
the SSH StrictHostKeyChecking and chmod changes introduced in the
open-source preparation commit. These changes conflict with upstream
develop and are not part of this feature branch's scope.

https://claude.ai/code/session_015jp8qNZT6kWZ8TtehTg3Uy
…solve merge conflicts

Restore these three files to their original upstream develop versions,
reverting security hardening changes (localhost-only port binding, sudo
lockdown, pipe-to-bash removal, file permission fixes) that were
introduced in earlier commits and conflict with upstream develop.

https://claude.ai/code/session_015jp8qNZT6kWZ8TtehTg3Uy
Rename the AI career companion from Cora to Navi in all source files
and documentation. Includes renaming useCoraChat hook to useNaviChat
and updating all UI strings, comments, and docs references.

https://claude.ai/code/session_01UYQ5A1EssptXBdHVFFHcE6
Merge origin/claude/vm-progress-tracking-LkwEk into feature branch.
Resolves conflict in Dashboard.tsx by keeping both the ProgressCard
from the progress tracking branch and the Cora→Navi rename from
this branch.

https://claude.ai/code/session_01UYQ5A1EssptXBdHVFFHcE6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.