AgentMash arrasa en Product Hunt: la nueva herramienta de pair‑programming con IA colaborativa
Introducción
En menos de 48 horas desde su lanzamiento en Product Hunt, AgentMash ha acumulado más de 2 500 menciones en Reddit, Hacker News y Twitter. La razón es simple: permite a dos desarrolladores codificar juntos, a distancia, sin perder la confidencialidad del código ni interrumpir los pipelines de CI/CD. En este artículo tienes una guía práctica (≈ 3 000 palabras) para entender su arquitectura, desplegarla en local y en la nube (AWS, GCP y Railway), y usarla con Node.js, Python y Rust. Incluimos snippets listos para copiar, integración con GitHub Actions, comparativa de costos y latencia frente a Copilot, Tabnine y CodeLlama, y un checklist definitivo para CI/CD.
1️⃣ ¿Qué es AgentMash y por qué lo necesitas ahora?
| Necesidad | Cómo la cubre AgentMash |
|---|---|
| Trabajo remoto | Contenedores efímeros con latencia mínima, sin depender de pantalla compartida. |
| IA colaborativa | Dos usuarios interactúan con el mismo modelo de IA en tiempo real, compartiendo prompts y resultados. |
| Seguridad de la IP | Cada duelo se ejecuta en un contenedor aislado; al cerrar la sesión, todo desaparece. |
| Integración CI/CD | Webhooks y artefactos exportables que pueden ser consumidos por Jenkins, GitHub Actions o GitLab CI. |
“Coding duels con IA colaborativa: AgentMash transforma el pair‑programming remoto” es el mensaje que ha resonado en la comunidad y que explica su valor diferencial frente a asistentes de IA tradicionales.
2️⃣ Arquitectura resumida
┌─────────────────────┐
│ Frontend (React) │ ← UI web + VS Code extension
└─────────┬───────────┘
│
REST API (FastAPI)
│
┌──────▼───────┐
│ Orquestador │ ← gestiona sesiones, colas y métricas
└──────┬───────┘
│
┌──────▼───────┐
│ Workers │ ← contenedores Docker (t3.medium por defecto)
└──────┬───────┘
│
┌──────▼───────┐
│ Provider IA │ ← OpenAI, Anthropic, LLaMA‑2, etc.
└──────────────┘
- Cada duelo crea un worker Docker que se destruye al terminar.
- Los providers de IA se registran mediante una API REST (
POST /providers).
3️⃣ Despliegue rápido
3.1 En local (Docker Compose)
# 1️⃣ Clona el repositorio
git clone https://github.com/agentmash/agentmash.git
cd agentmash
# 2️⃣ Copia el .env de ejemplo y ajusta tus credenciales
cp .env.example .env
nano .env # <-- añade OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.
# 3️⃣ Levanta la pila
docker compose up -d
El frontend quedará disponible en
http://localhost:3000y la API enhttp://localhost:8000.
3.2 En AWS (ECS + Fargate)
# Prepara la imagen
docker build -t agentmash:latest .
aws ecr create-repository --repository-name agentmash
docker tag agentmash:latest <account-id>.dkr.ecr.<region>.amazonaws.com/agentmash:latest
aws ecr get-login-password | docker login --username AWS --password-stdin <account-id>.dkr.ecr.<region>.amazonaws.com
docker push <account-id>.dkr.ecr.<region>.amazonaws.com/agentmash:latest
# Deploy con CloudFormation (template disponible en /infra/aws.yaml)
aws cloudformation deploy \
--template-file infra/aws.yaml \
--stack-name agentmash-prod \
--capabilities CAPABILITY_NAMED_IAM \
--parameter-overrides ImageUrl=<account-id>.dkr.ecr.<region>.amazonaws.com/agentmash:latest
3.3 En Railway (un solo clic)
- Crea una cuenta en Railway.
- Conecta tu repositorio de GitHub.
- Railway detecta automáticamente el
Dockerfiley despliega la aplicación.
4️⃣ Código de ejemplo
4.1 Node.js – iniciar un duelo desde la CLI
// duel.js
const fetch = require('node-fetch');
async function startDuel(teamA, teamB, model = 'gpt-4o') {
const res = await fetch('https://api.agentmash.com/v1/duels', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${process.env.AM_TOKEN}` },
body: JSON.stringify({ participants: [teamA, teamB], provider: model })
});
const data = await res.json();
console.log('Duelo creado:', data.duel_id);
}
startDuel('alice@example.com', 'bob@example.com');
$ node duel.js
Duelo creado: 7f9c3a1e-4b2d-44a1-9e5f-2d8c9f0a1b6e
4.2 Python – webhook que envía resultados a GitHub Actions
# webhook.py
import os, requests, json
from flask import Flask, request
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def receive():
payload = request.json
# Guardamos el código generado como artefacto
with open('duel_output.py', 'w') as f:
f.write(payload['code'])
# Notificamos a GitHub Actions
gh_url = f"https://api.github.com/repos/{os.getenv('GITHUB_REPO')}/dispatches"
headers = {"Authorization": f"token {os.getenv('GH_TOKEN')}"}
data = {"event_type": "duel_finished", "client_payload": {"duel_id": payload['duel_id']}}
requests.post(gh_url, headers=headers, json=data)
return '', 204
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
# .github/workflows/duel.yml
name: Procesar duelo
on:
repository_dispatch:
types: [duel_finished]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Ejecutar pruebas
run: python -m unittest discover -s tests
4.3 Rust – crear un worker personalizado
// src/worker.rs
use serde::{Deserialize, Serialize};
use reqwest::Client;
#[derive(Serialize, Deserialize)]
struct Prompt {
role: String,
content: String,
}
pub async fn invoke_ia(prompt: &str) -> anyhow::Result<String> {
let client = Client::new();
let body = Prompt {
role: "user".into(),
content: prompt.into(),
};
let resp = client
.post("https://api.anthropic.com/v1/complete")
.bearer_auth(std::env::var("ANTHROPIC_API_KEY")?)
.json(&body)
.send()
.await?
.text()
.await?;
Ok(resp)
}
5️⃣ Comparativa de costos y latencia
| Herramienta | Precio por minuto* | Latencia media (ms) | Modelo IA usado |
|---|---|---|---|
| AgentMash (t3.medium) | 0,004 USD | 120 ms (prompt → respuesta) | OpenAI gpt‑4o o modelo local |
| GitHub Copilot for Business | 0,30 USD/usuario/mes | 180 ms | Codex |
| Tabnine Enterprise | 0,12 USD/usuario/mes | 210 ms | GPT‑2‑fine‑tuned |
| CodeLlama (Meta) | 0,006 USD (GPU) | 150 ms | Llama 2‑13B |
*Coste estimado en producción con una sesión típica de 30 minutos.
Conclusión: AgentMash es 2‑3× más barato que la competencia y ofrece latencia comparable, con la ventaja de ser colaborativo y pipeline‑ready.
6️⃣ Seguridad en contenedores
- Aislamiento total – Cada duelo se ejecuta en un contenedor sin volúmenes persist
Herramienta mencionada: Groq Cloud
Top comments (0)