Plant Cerebro
← proyectos
proyectoabiertopotenciar22/09

Migración de GitLab a GitHub

Relevamiento hecho el 2026-09-22 sobre ~/Proyectos de la MacBook Pro, con comandos

de sólo lectura. No se migró ningún repo todavía: la clave SSH de la Pro no está

aceptada en GitHub (ver Bloqueantes).

Estado de la autenticación

ServicioResultado
GitLab (ssh -T git@gitlab.com)✅ Welcome to GitLab, @gabriel205!
GitHub (ssh -T git@github.com)❌ Permission denied (publickey)
gh (CLI de GitHub)❌ no está instalado en la Pro
Token de GitHub guardado❌ no hay (~/.config/gh no existe, sin credential helper)

La clave que hay que cargar en GitHub es ~/.ssh/id_ed25519.pub de la Pro:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEjda7pJgenqWVZ53LC3k4O1233JYBM6ouT+EL5si6Yb gabriel@macbook-pro

Se reintentó tres veces durante el trabajo y siguió dando Permission denied.

Sin eso no se puede empujar nada. Lo único que hoy funciona contra GitHub es

HTTPS y sólo para repos públicos.

Inventario de repos

RepoRemoto actualRamaCommitsSin comitearSin pushearTamaño (.git)Último commit
baileys-mcpGitHub juanbusso/baileys-mcp (público)feat/agentapi-cli-shim671 archivo49 commits (rama sin remoto)246M (2.7M)2026-09-22
plant-cerebroGitLab vivet-group/internomain13——1.2M (640K)2026-09-22
plant-direccionGitLab vivet-group/direccionmain2——760K (360K)2026-09-04
plant-finanzasGitLab vivet-group/internomain24 archivos—300K (152K)2026-09-05
plant-hubGitLab vivet-group/plant-hubfeat/meli-buyer-comparison1642—18 commits2.8G (39M)2026-09-21
plant-internoGitLab vivet-group/internomain352—5 ramas wt/ sin remoto (0 commits propios)103M (68M)2026-09-22
plant-operativoGitLab vivet-group/internomain13 archivos—188K (136K)2026-09-06
plant-personalGitLab gabriel205main32 archivos—444K (264K)2026-09-07
plant-rrhhGitLab vivet-group/internomain13 archivos—188K (136K)2026-09-06
plant-skillsGitLab vivet-group/skillsmain6——15M (4.6M)2026-09-11
plant-vicenzoGitLab gabriel205main100——5.1M (1.9M)2026-09-22
mcp-google-workspaceno es repo git——————
mcp-mercadolibreno es repo git——————

Ningún repo tiene submódulos. Ningún repo tiene blobs de más de 20 MB en el

historial, así que el límite de 100 MB por archivo de GitHub no es un problema.

Qué hay en GitHub hoy

Sin gh ni token sólo se pueden ver repos públicos. Se probaron los 11 nombres

contra los dueños juanbusso, gabriel205, gabrielbusso y vivet-group:

106ed571. El origin/main que tiene cacheada la Pro es 601fc0bd y el main

local es 442beea0: la copia local está desactualizada y GitHub ya avanzó más

todavía.

No se puede distinguir una cosa de la otra sin autenticarse. Hay que

confirmarlo con Juanchi o entrando a GitHub.

Bloqueantes de seguridad — NO migrar estos repos como están

1. plant-hub · apps/shop/shop.env.local — clave privada viva en main

El archivo está presente en el HEAD de main (y en origin/main de GitLab,

y en origin/feat/product-sheet-and-filters y origin/fix/catalogo-orden-y-sidebar-sticky).

Son 73 líneas con credenciales reales, entre ellas:

no un placeholder (línea 19).

Entró el 2026-08-06 en el commit 728b93a7 ("Feat: Add editorial dark chrome for

catalog aisles"). El 2026-08-19 el commit bf5354f2 ("seguridad: sacar del repo un

archivo de entorno con credenciales de Mongo") lo borró y arregló el .gitignore

— pero ese arreglo nunca se mergeó a main. Sólo está en staging y en

feat/meli-buyer-comparison.

git merge-base --is-ancestor bf5354f2 main → NO

Es decir: main, que es la rama por defecto, sigue teniendo el archivo. Y aunque

se borre hoy, queda en el historial, así que empujar main a GitHub publica

igual la clave en cualquiera que pueda clonar.

2. plant-hub · token de Home Assistant hardcodeado

packages/business-logic/src/actions/admin/infrastructure/ha-client.ts, línea 8:

un token JWT de larga duración de Home Assistant como DEFAULT_HA_TOKEN, junto a

DEFAULT_HA_URL = "http://100.78.179.114:8123" (IP de Tailscale). El token vence

recién en 2036. Está en staging y en feat/meli-buyer-comparison (commit 7b89f2f4).

3. baileys-mcp está en un repo PÚBLICO y la rama sin pushear tiene datos personales

juanbusso/baileys-mcp es público. Los 49 commits sin pushear de

feat/agentapi-cli-shim incluyen, en texto plano:

src/baileys/client.ts (líneas 420 y 1608) y en src/db/database.ts (línea 300).

(líneas 31-33): "Hogar", "THGAS GENERAL", "Baileys mcp".

No hay credenciales de sesión de WhatsApp versionadas — eso está bien. Pero

empujar esa rama a un repo público publica el número personal de Gabriel y los

identificadores de sus grupos.

4. mcp-google-workspace tiene una clave de service account suelta

~/Proyectos/mcp-google-workspace/service_account.json (2.395 bytes, permisos

-rw-------). Hoy no es riesgo porque la carpeta no es un repo git. Pasa a

serlo el día que alguien haga git init ahí. Si se va a versionar ese proyecto,

primero .gitignore.

Qué está limpio

Se escaneó el historial completo (git log -p --all) de los diez repos

candidatos buscando valores reales de credenciales: tokens de GitHub/GitLab,

sk-ant-, sk-proj-, claves de Slack, AWS, Google API, bloques

BEGIN ... PRIVATE KEY, y URIs de Mongo/Postgres/Redis con contraseña.

Sin hallazgos en: baileys-mcp, plant-cerebro, plant-direccion, plant-finanzas,

plant-interno, plant-operativo, plant-personal, plant-rrhh, plant-skills, plant-vicenzo.

Las apariciones de client_secret en plant-interno (scripts y workers) y en

plant-hub son todas lecturas de variables de entorno (env.GOOGLE_CLIENT_SECRET,

cfg["client_secret"]), no valores. Los -----BEGIN PRIVATE KEY----- de los tests

de facturación de plant-hub son literales de prueba ("\nx\n", "MIIBkey").

La sk-ant-api03-clave-super-secreta-de-prueba de ai-config.test.ts es falsa.

Las AIza... de Firebase en google-services.json, GoogleService-Info.plist y

firebase-messaging-sw.js son claves de cliente, pensadas para ir en el navegador.

Riesgos que no son de seguridad

feat/agentapi-cli-shim nunca se empujó. Si se rompe el disco de la Pro, se

pierden. Es el trabajo de los últimos días sobre el asistente. Es el riesgo más

urgente después de los secretos.

esos sí están en GitLab en su rama remota — el riesgo es menor.

GitHub 106ed571). Antes de tocar nada hay que hacer git fetch y decidir.

Nunca con --force.

propios: son worktrees, no hay nada que perder.

CLAUDE.md, DREAMS.md y memory/ sin agregar), plant-operativo, plant-rrhh

(.gitignore, DREAMS.md, memory/dreaming/) y plant-personal (.claude/,

CLAUDE.md). No se comitearon: decide Gabriel qué va al repo y qué no.

node_modules y artefactos. El clon a GitHub es liviano.

Plan de migración

Paso 0 — desbloquear (hace falta Gabriel o Juanchi)

  1. Cargar la clave id_ed25519.pub de la Pro en GitHub (Settings → SSH keys).

Verificar con ssh -T git@github.com.

  1. Confirmar con Juanchi qué repos ya creó en GitHub, con qué nombre y bajo qué

dueño u organización. Sin eso no se sabe si hay que crear o si ya existen.

  1. Si no se va a instalar gh, los repos hay que crearlos a mano en GitHub,

vacíos y privados, con estos nombres: plant-cerebro, plant-direccion,

plant-finanzas, plant-interno, plant-operativo, plant-personal,

plant-rrhh, plant-skills, plant-vicenzo. Y plant-hub recién después de

resolver los secretos.

Paso 1 — migrar los nueve repos limpios

Para cada uno, una vez creado el repo vacío del otro lado:

git remote add github git@github.com:<dueño>/<repo>.git
git push github --all
git push github --tags
git ls-remote github   # comparar hashes contra los locales

El remoto origin de GitLab no se toca: queda de respaldo.

Paso 2 — baileys-mcp

Decidir antes si el repo sigue público. Si sigue público, sacar el número de

teléfono y los JIDs de grupos a variables de entorno antes de empujar

feat/agentapi-cli-shim. Si pasa a privado, se puede empujar directo.

Paso 3 — plant-hub

No migrar hasta que se decida qué hacer con la clave de Firebase y el token de

Home Assistant. Hay dos caminos y los dos necesitan que Gabriel decida:

ENCRYPTION_KEY, CRON_SECRET) y migrar aceptando que el historial viejo

queda con secretos ya muertos. Es lo más sano y no requiere reescribir nada.

los clones de todo el equipo y no lo hago sin una orden explícita.

En cualquier caso, mergear bf5354f2 a main para que la rama por defecto

deje de tener el archivo.

Lo que no se hizo y por qué

🔗 Conexiones Neuronales

Proyectos/migracion-gitlab-a-github