Casos de Uso
Ejemplos reales de cómo usar MKS DevEnv en diferentes escenarios
Casos de Uso
MKS DevEnv nació de una necesidad personal: estaba cansado de configurar mis dev envs a mi gusto y mantener mis dotfiles. Decidí integrarlo todo en una imagen reutilizable y desplegarla en Coolify — y vi el potencial.
Este proyecto es parte de un ecosistema más grande de automatización:
- telegram-bot-manager: Gestión de bots vía Telegram
- mks-bot-father: Factory para crear y configurar bots
- coolify-mks-cli-mcp: CLI y MCP para Coolify automation
Todos se integran con MKS DevEnv para crear, configurar y deployar workspaces y proyectos vía Telegram, API CLI, web app, y uso como librería.
¿Por qué no otro wrapper de OpenClaw?
No quería hacer otro instalador simple de OpenClaw como los que han salido en Twitter. Lo integré a mi infraestructura existente para darle un lugar real donde vivir a mis agentes propios — y hacerlo realmente útil para mis proyectos.
Escenarios de Uso Principales
1. Integración Continua con Pull Requests
Crea entornos efímeros por cada PR para testing automatizado.
Paso 1: Configura el webhook
Primero, obtén la URL del API de tu instancia de MKS DevEnv:
export DEVENV_API_URL="https://lab1-helsinki.api.mks2508.systems"Paso 2: Workflow de GitHub Actions
Crea un archivo .github/workflows/devenv-pr.yml:
name: DevEnv PR Workspace
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
create-workspace:
runs-on: ubuntu-latest
steps:
- name: Create DevEnv workspace
id: create-ws
run: |
RESPONSE=$(curl -X POST "${{ secrets.DEVENV_API_URL }}/api/workspaces" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${{ secrets.DEVENV_TOKEN }}" \
-d '{
"name": "pr-${{ github.event.pull_request.number }}",
"template": "bun-typescript",
"type": "temporary",
"repo": "${{ github.event.pull_request.head.repo.full_name }}",
"branch": "${{ github.event.pull_request.head.ref }}"
}')
WORKSPACE_ID=$(echo $RESPONSE | jq -r '.id')
echo "workspace_id=$WORKSPACE_ID" >> $GITHUB_OUTPUT
- name: Run tests in workspace
run: |
curl -X POST "${{ secrets.DEVENV_API_URL }}/api/workspaces/pr-${{ github.event.number }}/exec" \
-H "Authorization: Bearer ${{ secrets.DEVENV_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{"command": "bun test"}'
- name: Cleanup workspace on PR close
if: github.event.action == 'closed'
run: |
curl -X DELETE "${{ secrets.DEVENV_API_URL }}/api/workspaces/pr-${{ github.event.number }}" \
-H "Authorization: Bearer ${{ secrets.DEVENV_TOKEN }}"Paso 3: Los tests corren en el workspace
Los tests de Playwright corren en el entorno sandboxed con todos los browsers disponibles.
2. Agentes de AI para Code Review
Integra Claude u otros agentes para análisis automático de código.
Claude Agent Integration
import { AgentBackend } from '@mks-devenv/agent-backend';
const agent = new AgentBackend({
apiUrl: 'https://lab1-helsinki.api.mks2508.systems',
apiKey: process.env.DEVENV_API_KEY!,
});
// Crear sesión de análisis
const session = await agent.sessions.create({
workspaceId: 'my-project',
model: 'claude-4',
context: {
task: 'code-review',
prNumber: 123,
},
});
// Agent analiza el PR
const review = await agent.sessions.sendMessage(session.id, {
message: `Analiza el PR #123 y encuentra:
1. Bugs potenciales
2. Problemas de seguridad
3. Mejoras de rendimiento
4. Code smell`,
});
console.log(review.content);OpenAI Agents
const session = await agent.sessions.create({
workspaceId: 'my-project',
model: 'gpt-4-turbo',
context: {
task: 'code-review',
prNumber: 123,
},
});3. Workshops y Cursos
Crea entornos consistentes para estudiantes o asistentes a workshops.
Creación Masiva de Workspaces
#!/bin/bash
# create-workshops.sh
WORKSHOP_TEMPLATE="bun-typescript"
STUDENT_COUNT=20
for i in $(seq 1 $STUDENT_COUNT); do
devenv create "workshop-student-$i" \
--template "$WORKSHOP_TEMPLATE" \
--type temporary \
--port-auto
done
echo "✓ Created $STUDENT_COUNT workspaces"
devenv list | grep workshop-studentConfigurar Material del Curso
Cada workspace tiene acceso al material del curso montado como volumen:
# docker-compose.override.yml
services:
devenv:
volumes:
- ./course-material:/workspace/course-material:ro4. QA Automatizado
Entornos efímeros para testing E2E con Playwright.
Script de Testing E2E
// e2e/test-runner.ts
import { WorkspaceService } from '@mks-devenv/core';
async function runE2ETests() {
const workspace = new WorkspaceService();
// Crear workspace efímero para tests
const testWorkspace = await workspace.create({
name: `e2e-${Date.now()}`,
template: 'bun-typescript',
type: 'temporary',
});
try {
// Clonar repo bajo test
await workspace.cloneRepository(testWorkspace.id, {
url: 'https://github.com/your-org/your-repo',
branch: 'main',
});
// Instalar dependencias
await workspace.exec(testWorkspace.id, {
command: 'bun install',
});
// Correr Playwright tests
const result = await workspace.exec(testWorkspace.id, {
command: 'bunx playwright test',
});
console.log('Tests output:', result.stdout);
if (result.exitCode !== 0) {
throw new Error('Tests failed');
}
} finally {
// Cleanup
await workspace.remove(testWorkspace.id, { volumes: true });
}
}5. Desarrollo de Features en Paralelo
Múltiples workspaces para desarrollar features sin interferir entre sí.
# Crear workspace para feature A
devenv create feature-auth --template bun-typescript
# Crear workspace para feature B
devenv create feature-payments --template bun-typescript
# Ambos corren en puertos diferentes
devenv list
# NAME STATUS PORT TEMPLATE
# feature-auth running 8443 bun-typescript
# feature-payments running 8444 bun-typescript6. Demo Environments
Entornos de demo limpios para presentaciones a clientes.
Script de Reset de Demo
#!/bin/bash
# reset-demo.sh
# Destruir workspace anterior
devenv destroy demo-client --volumes --force
# Crear nuevo workspace limpio
devenv create demo-client \
--template bun-typescript \
--type temporary
# Clonar repo de demo
cd ~/workspaces/demo-client
git clone https://github.com/your-org/demo-repo.git .
# Instalar y setup
bun install
bun run setup:demo
echo "✓ Demo environment ready"
devenv open demo-client7. Microservicios
Despliega múltiples microservicios en workspaces separados.
# docker-compose.microservices.yml
services:
# Auth service
auth-service:
image: ghcr.io/mks2508/devenv-full:latest
labels:
- "mks.devenv=true"
- "mks.devenv.workspace=auth-service"
- "mks.devenv.type=persistent"
- "mks.devenv.port.codeserver=8443"
environment:
- SERVICE_NAME=auth
- PORT=3001
# API Gateway
api-gateway:
image: ghcr.io/mks2508/devenv-full:latest
labels:
- "mks.devenv=true"
- "mks.devenv.workspace=api-gateway"
- "mks.devenv.type=persistent"
- "mks.devenv.port.codeserver=8444"
environment:
- SERVICE_NAME=gateway
- PORT=3002
# Frontend
frontend:
image: ghcr.io/mks2508/devenv-full:latest
labels:
- "mks.devenv=true"
- "mks.devenv.workspace=frontend"
- "mks.devenv.type=persistent"
- "mks.devenv.port.codeserver=8445"
environment:
- SERVICE_NAME=frontend
- PORT=30008. Debugging de Producción
Replica issues de producción en un entorno sandboxed.
# Crear workspace con mismo commit que producción
devenv create debug-prod-$(date +%s) --template bun-typescript
cd ~/workspaces/debug-prod-*
git clone https://github.com/your-org/your-repo.git
git checkout $PRODUCTION_COMMIT_TAG
# Replicar variables de entorno
cat > .env.prod << EOF
DATABASE_URL=$PROD_DB_READONLY
REDIS_URL=$PROD_REDIS
API_KEY=$PROD_API_KEY_READONLY
EOF
# Iniciar servicio y debug
bun run dev
devenv open debug-prod-*Más Casos de Uso
¿Tienes un caso de uso interesante? Compártelo en GitHub Discussions.