## Asset Header

- **Asset ID:** SOP-EL-R100X-Guia-Setup-BrainOS-v01
- **Version:** v01
- **Status:** Draft
- **Owner:** Victor Heredia
- **IntellBank:** IB-EL-EmpowerLabs
- **Tipo:** SOP — Standard Operating Procedure
- **Propósito:** Guía de Instalación — Tu BrainOS (Memoria Persistente para Tu Sherpa IA)
- **Última actualización:** 2026-04-11

---

# Guía de Instalación — Tu BrainOS (Memoria Persistente para Tu Sherpa IA)
## Re100X-Guia-Setup-BrainOS-v01

---


---

## ¿Qué vas a construir y por qué importa?

Imagina que cada vez que hablas con una IA (Claude, ChatGPT, Gemini), esa IA recuerda todo lo que le has dicho antes — tus decisiones, tus proyectos, tu forma de pensar, tus compromisos. No porque la plataforma lo guarde (eso depende de ellos y pueden borrarlo cuando quieran), sino porque **tú tienes tu propia base de datos personal** donde se almacena todo.

Eso es un BrainOS: **tu memoria digital soberana.** Es tuya, vive en tu cuenta, y cualquier IA puede leer de ella y escribir en ella.

**En términos simples:** vas a crear una "bodega de pensamientos" en la nube, y vas a darle a tus IAs la llave para que puedan guardar cosas ahí y buscarlas cuando las necesites.

### Lo que vas a necesitar

| Servicio | Qué es en lenguaje simple | Costo |
|----------|--------------------------|-------|
| **Supabase** | Una base de datos en la nube. Piensa en ella como un Excel muy poderoso que vive en internet y que las IAs pueden consultar. | Gratis (el tier gratuito es más que suficiente) |
| **OpenRouter** | Un "traductor universal" que permite que tu base de datos entienda el significado de lo que guardas, no solo las palabras exactas. | ~$5 USD (duran meses de uso normal) |

### Los 8 pasos del proceso

| Paso | Qué haces | Dónde | Tiempo |
|------|-----------|-------|--------|
| 1 | Crear tu proyecto Supabase | supabase.com (navegador) | 3 min |
| 2 | Configurar la base de datos | Supabase dashboard (navegador) | 5 min |
| 3 | Guardar tus credenciales de conexión | Supabase dashboard (navegador) | 2 min |
| 4 | Crear cuenta OpenRouter + API key | openrouter.ai (navegador) | 3 min |
| 5 | Generar tu clave de acceso | Terminal (Mac) o PowerShell (Windows) | 2 min |
| 6 | Desplegar el servidor MCP | Terminal / PowerShell | 15 min |
| 7 | Conectar a Claude Desktop y/o ChatGPT | Cada app respectiva | 5 min |
| 8 | Probar que funciona | Claude Desktop o ChatGPT | 5 min |

---

## ANTES DE EMPEZAR — Descarga el Credential Tracker

> **¿Qué es esto?** Es una hoja de Excel donde vas a ir anotando todas las contraseñas, claves y URLs que generes durante el proceso. Algunas de estas claves **solo se muestran una vez** — si no las guardas inmediatamente, tendrás que empezar de nuevo.

📥 **[Descargar Credential Tracker (.xlsx)](https://raw.githubusercontent.com/NateBJones-Projects/OB1/main/docs/BrainOS-credential-tracker.xlsx)**

Ábrelo ahora. Déjalo abierto. Llénalo conforme avanzas.

---

## PASO 1 — Crear tu proyecto Supabase

### ¿Qué es Supabase? (Para no-técnicos)

Supabase es como rentar un pequeño almacén digital en la nube. Ahí vas a guardar tus pensamientos, decisiones, ideas y contexto. Lo especial de este almacén es que tiene "búsqueda inteligente" — puede encontrar cosas por su significado, no solo por las palabras exactas que usaste.

### Acciones

1. Ve a [supabase.com](https://supabase.com) y crea una cuenta (el login con GitHub es el más rápido, pero puedes usar email)
2. Una vez dentro del dashboard, haz clic en **New Project**
3. Elige tu organización (la que viene por default está bien)
4. Ponle nombre al proyecto: `BrainOS`
5. **IMPORTANTE:** Genera una contraseña de base de datos → **cópiala inmediatamente al Credential Tracker**
6. Elige la región más cercana a ti (ej: East US si estás en CDMX)
7. Haz clic en **Create new project** — espera 1-2 minutos

### ¿Qué buscar para confirmar que funcionó?

Cuando el proyecto esté listo, verás un dashboard con menú a la izquierda. En la URL de tu navegador verás algo como:

```
supabase.com/dashboard/project/abcxyz123
```

Esa parte random (`abcxyz123`) es tu **Project ref**. Cópiala al Credential Tracker.

### Status de Victor

> *(Se irá llenando conforme avancemos)*
> - [ ] Cuenta Supabase creada
> - [ ] Proyecto "BrainOS" creado
> - [ ] Database password guardado en tracker
> - [ ] Project ref guardado en tracker

---

## PASO 2 — Configurar la base de datos

### ¿Qué estamos haciendo? (Para no-técnicos)

Acabas de crear el "almacén". Ahora necesitas instalar los "estantes" — definir cómo se va a organizar la información adentro. Son 4 comandos SQL que se copian y pegan uno por uno. No necesitas entender el código — solo copiarlo y hacer clic en "Run".

**Analogía:** Es como cuando compras un archivero nuevo y le pones las divisiones y las etiquetas antes de empezar a guardar carpetas.

### 2.1 — Activar la extensión de vectores

En el menú izquierdo del dashboard de Supabase: **Database → Extensions** → busca "vector" → activa **pgvector** (flip el switch ON).

> **¿Para qué sirve?** Esto permite que tu base de datos entienda "significados", no solo texto. Es lo que hace posible que busques "criterios para rechazar proyectos" y encuentre un pensamiento que dice "No acepté el trabajo de María porque requería viajar demasiado."

### 2.2 — Crear la tabla de pensamientos

En el menú izquierdo: **SQL Editor → New query** → pega el siguiente código y haz clic en **Run**:

```sql
-- Crear la tabla de pensamientos
create table thoughts (
  id uuid default gen_random_uuid() primary key,
  content text not null,
  embedding vector(1536),
  metadata jsonb default '{}'::jsonb,
  created_at timestamptz default now(),
  updated_at timestamptz default now()
);

-- Índice para búsqueda semántica rápida
create index on thoughts
  using hnsw (embedding vector_cosine_ops);

-- Índice para filtrar por metadata
create index on thoughts using gin (metadata);

-- Índice para consultas por fecha
create index on thoughts (created_at desc);

-- Auto-actualizar la fecha de modificación
create or replace function update_updated_at()
returns trigger as $$
begin
  new.updated_at = now();
  return new;
end;
$$ language plpgsql;

create trigger thoughts_updated_at
  before update on thoughts
  for each row
  execute function update_updated_at();
```

> **¿Qué acaba de pasar?** Creaste una "tabla" llamada `thoughts` con 6 columnas: un ID único, el texto del pensamiento, su representación semántica (el "significado" en números), metadata (etiquetas automáticas), y dos fechas. También creaste 3 índices que hacen las búsquedas rápidas, y un mecanismo que actualiza automáticamente la fecha cuando modificas algo.

### 2.3 — Crear la función de búsqueda

Nueva query → pega y Run:

```sql
create or replace function match_thoughts(
  query_embedding vector(1536),
  match_threshold float default 0.7,
  match_count int default 10,
  filter jsonb default '{}'::jsonb
)
returns table (
  id uuid,
  content text,
  metadata jsonb,
  similarity float,
  created_at timestamptz
)
language plpgsql
as $$
begin
  return query
  select
    t.id,
    t.content,
    t.metadata,
    1 - (t.embedding <=> query_embedding) as similarity,
    t.created_at
  from thoughts t
  where 1 - (t.embedding <=> query_embedding) > match_threshold
    and (filter = '{}'::jsonb or t.metadata @> filter)
  order by t.embedding <=> query_embedding
  limit match_count;
end;
$$;
```

> **¿Qué acaba de pasar?** Creaste la función de "búsqueda inteligente". Cuando le preguntes a tu IA "¿qué decidí sobre X?", esta función compara el significado de tu pregunta con el significado de todos tus pensamientos guardados, y devuelve los más parecidos — ordenados por relevancia.

### 2.4 — Configurar seguridad

Nueva query → pega y Run:

```sql
alter table thoughts enable row level security;

create policy "Service role full access"
  on thoughts
  for all
  using (auth.role() = 'service_role');
```

> **¿Qué acaba de pasar?** Activaste la seguridad. Solo tu servidor (con tu clave secreta) puede leer y escribir en la tabla. Nadie más puede acceder a tus pensamientos.

### 2.5 — Otorgar permisos

Nueva query → pega y Run:

```sql
grant select, insert, update, delete on table public.thoughts to service_role;
```

> **¿Qué acaba de pasar?** Le diste permiso explícito a tu servidor para leer, escribir, actualizar y borrar pensamientos. Sin esto, el servidor recibiría un error de "permiso denegado".

### ¿Cómo verificar que todo funcionó?

Ve a **Table Editor** en el menú izquierdo. Deberías ver la tabla `thoughts` con las columnas: id, content, embedding, metadata, created_at, updated_at. Si la ves, todo está bien.

### Status de Victor

> - [ ] pgvector activado
> - [ ] Tabla `thoughts` creada (visible en Table Editor)
> - [ ] Función `match_thoughts` creada (visible en Database → Functions)
> - [ ] Row Level Security activada
> - [ ] Permisos otorgados

---

## PASO 3 — Guardar tus credenciales de conexión

### ¿Qué estamos haciendo? (Para no-técnicos)

Necesitas dos "llaves" para que tu servidor pueda hablar con tu base de datos: la dirección (URL) y la clave secreta. Es como anotar la dirección de tu almacén y hacer una copia de la llave.

### Acciones

En el menú izquierdo: **Settings** (ícono de engrane) → **API Keys**

Copia al Credential Tracker:

1. **Project URL** — Aparece arriba de la página bajo "Project URL"
2. **Secret key** — Baja hasta la sección **"Secret keys"** → copia la key `default`

> ⚠️ **Trata la Secret key como una contraseña.** Quien la tenga puede leer y escribir en tu base de datos. No la compartas ni la publiques.

### Status de Victor

> - [ ] Project URL guardada en tracker
> - [ ] Secret key guardada en tracker

---

## PASO 4 — Crear cuenta OpenRouter + API key

### ¿Qué es OpenRouter? (Para no-técnicos)

OpenRouter es un servicio que traduce texto a "vectores de significado" (embeddings). Cuando guardas un pensamiento, OpenRouter lo convierte en una representación matemática de su significado. Cuando buscas algo, hace lo mismo con tu pregunta y compara ambas representaciones. Así es como encuentra cosas por significado y no solo por palabras exactas.

**Analogía:** Si tu base de datos es la bodega, OpenRouter es el bibliotecario que sabe clasificar cada libro por su tema profundo, no solo por el título.

### Acciones

1. Ve a [openrouter.ai](https://openrouter.ai) y crea una cuenta
2. Ve a [openrouter.ai/keys](https://openrouter.ai/keys)
3. Haz clic en **Create Key**, nómbrala `BrainOS`
4. **Copia la key inmediatamente al Credential Tracker**
5. Ve a Credits y agrega $5 USD

### Status de Victor

> - [ ] Cuenta OpenRouter creada
> - [ ] API key generada y guardada en tracker
> - [ ] $5 USD en créditos agregados

---

## PASO 5 — Generar tu clave de acceso (MCP Access Key)

### ¿Qué estamos haciendo? (Para no-técnicos)

Tu servidor va a estar accesible por internet (así es como Claude y ChatGPT pueden hablarle). Necesitas una clave de acceso para que solo TÚ puedas usarlo. Es como ponerle contraseña a tu WiFi.

### Acciones

Abre la **Terminal** (Mac) o **PowerShell** (Windows) y ejecuta:

**Mac/Linux:**
```bash
openssl rand -hex 32
```

**Windows (PowerShell):**
```powershell
-join ((1..32) | ForEach-Object { '{0:x2}' -f (Get-Random -Maximum 256) })
```

Te dará algo como: `a3f8b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1`

**Cópialo al Credential Tracker** bajo "MCP Access Key".

> **¿Cómo abrir la Terminal?**
> - **Mac:** Busca "Terminal" en Spotlight (Cmd + Espacio → escribe "Terminal")
> - **Windows:** Busca "PowerShell" en el menú de inicio

### Status de Victor

> - [ ] Terminal abierta
> - [ ] MCP Access Key generada y guardada en tracker

---

## PASO 6 — Desplegar el servidor MCP

### ¿Qué estamos haciendo? (Para no-técnicos)

Hasta ahora creaste la bodega (Supabase) y contrataste al bibliotecario (OpenRouter). Ahora vas a instalar la "puerta de entrada" — un pequeño servidor que recibe peticiones de tus IAs y las traduce en operaciones sobre tu base de datos. Se llama "servidor MCP" (Model Context Protocol).

**Analogía:** Es como instalar un recepcionista en la entrada de tu bodega que sabe atender a cualquier persona (Claude, ChatGPT, etc.) y sabe exactamente dónde guardar y dónde buscar las cosas.

### 6.1 — Crear carpeta del proyecto

Crea una carpeta nueva donde guardes tus proyectos (ej: Documentos/BrainOS).

En la Terminal, navega a esa carpeta:

```bash
cd /ruta/a/tu/carpeta/BrainOS
```

> **Tip:** En Mac, puedes arrastrar la carpeta desde Finder a la Terminal después de escribir `cd ` (con espacio).

### 6.2 — Instalar Supabase CLI

**Mac (con Homebrew):**
```bash
brew install supabase/tap/supabase
```

**Mac (sin Homebrew — instala Homebrew primero):**
```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
Luego cierra y reabre Terminal, y ejecuta el comando de arriba.

**Windows:**
```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
scoop bucket add supabase https://github.com/supabase/scoop-bucket.git
scoop install supabase
```

Verifica que funcionó:
```bash
supabase --version
```

> **¿Qué es un CLI?** Es un programa que se usa desde la Terminal escribiendo comandos, en lugar de hacer clic en botones. No te preocupes — solo vas a copiar y pegar los comandos que te doy aquí.

### 6.3 — Conectar tu Terminal a Supabase

```bash
supabase login
```

Se abrirá tu navegador para autenticar. Sigue las instrucciones y regresa a la Terminal cuando diga "You are now logged in."

### 6.4 — Inicializar y vincular el proyecto

```bash
supabase init
```

Verifica que se creó la carpeta:
```bash
ls supabase/
```

Vincula con tu proyecto (reemplaza `YOUR_PROJECT_REF` con el valor de tu Credential Tracker):
```bash
supabase link --project-ref YOUR_PROJECT_REF
```

### 6.5 — Configurar las claves secretas

```bash
supabase secrets set MCP_ACCESS_KEY=tu-access-key-del-paso-5
```

```bash
supabase secrets set OPENROUTER_API_KEY=tu-openrouter-key-del-paso-4
```

> ⚠️ Asegúrate de que las claves coincidan EXACTAMENTE con lo que guardaste en el Credential Tracker.

### 6.6 — Descargar los archivos del servidor

Tres comandos, uno por uno:

```bash
supabase functions new BrainOS-mcp
```

```bash
curl -o supabase/functions/BrainOS-mcp/index.ts https://raw.githubusercontent.com/NateBJones-Projects/OB1/main/server/index.ts
```

```bash
curl -o supabase/functions/BrainOS-mcp/deno.json https://raw.githubusercontent.com/NateBJones-Projects/OB1/main/server/deno.json
```

Verifica que descargó correctamente:
```bash
head -1 supabase/functions/BrainOS-mcp/index.ts
```

✅ Debe mostrar: `import "jsr:@supabase/functions-js/edge-runtime.d.ts";`
❌ Si muestra: `console.log("Hello from Functions!")` — la descarga falló. Borra la carpeta y repite los 3 comandos.

### 6.7 — Desplegar

```bash
supabase functions deploy BrainOS-mcp --no-verify-jwt
```

Tu servidor ahora está vivo en:
```
https://YOUR_PROJECT_REF.supabase.co/functions/v1/BrainOS-mcp
```

Tu **MCP Connection URL** (la que usarás para conectar las IAs) es:
```
https://YOUR_PROJECT_REF.supabase.co/functions/v1/BrainOS-mcp?key=tu-access-key
```

Guarda ambas en el Credential Tracker.

### Status de Victor

> - [ ] Carpeta del proyecto creada
> - [ ] Supabase CLI instalado
> - [ ] Login exitoso
> - [ ] Proyecto inicializado y vinculado
> - [ ] Secrets configurados (MCP_ACCESS_KEY + OPENROUTER_API_KEY)
> - [ ] Archivos del servidor descargados (verificado con head -1)
> - [ ] Servidor desplegado (deploy exitoso)
> - [ ] MCP Server URL guardada en tracker
> - [ ] MCP Connection URL guardada en tracker

---

## PASO 7 — Conectar a Claude Desktop y/o ChatGPT

### Conectar a Claude Desktop

1. Abre Claude Desktop → **Settings** → **Connectors**
2. Haz clic en **Add custom connector**
3. Nombre: `BrainOS`
4. Remote MCP server URL: pega tu **MCP Connection URL** (la que termina en `?key=tu-clave`)
5. Haz clic en **Add**

Eso es todo. En tu próxima conversación, Claude tendrá acceso a tu BrainOS.

> **Para activar/desactivar por conversación:** En cualquier chat, haz clic en el botón "+" → Connectors → activa o desactiva BrainOS.

### Conectar a ChatGPT (requiere plan de pago)

1. Ve a [chatgpt.com](https://chatgpt.com) → perfil → **Settings**
2. **Apps & Connectors** → **Advanced settings** → activa **Developer mode**
3. En **Apps & Connectors**, haz clic en **Create**
4. Nombre: `BrainOS`
5. Descripción: `Base de conocimiento personal con búsqueda semántica`
6. MCP endpoint URL: pega tu **MCP Connection URL**
7. Authentication: selecciona **No Authentication** (tu clave va en la URL)
8. Haz clic en **Create**

> ⚠️ Activar Developer Mode desactiva la función Memory de ChatGPT. Tu BrainOS la reemplaza — y funciona en todas las IAs, no solo en ChatGPT.

### Status de Victor

> - [ ] Claude Desktop conectado (connector agregado)
> - [ ] ChatGPT conectado (connector creado)
> - [ ] Herramientas visibles en nueva conversación

---

## PASO 8 — Probar que funciona

### Test 1: Capturar un pensamiento

En Claude Desktop (o ChatGPT), escribe:

```
Recuerda esto: Decidí que el proyecto Tu Sherpa IA va a ser el primer producto que pase por la Factory formal del Big MetaFactory. Victor es el primer cliente.
```

La IA debería confirmar la captura y mostrar metadata extraída (tipo, temas, personas, action items).

### Test 2: Buscar un pensamiento

En la misma conversación o una nueva:

```
¿Qué he decidido sobre Tu Sherpa IA?
```

Debería encontrar el pensamiento que acabas de guardar.

### Test 3: Verificar en Supabase

Ve al dashboard de Supabase → **Table Editor** → tabla `thoughts`. Deberías ver una fila con tu mensaje, un embedding (array de números), y metadata.

### Status de Victor

> - [ ] Thought capturado exitosamente
> - [ ] Búsqueda semántica funcionando
> - [ ] Fila visible en Supabase Table Editor

---

## ¡LISTO! Tu BrainOS está operativo.

### Lo que acabas de construir

En ~45 minutos, sin escribir una línea de código, construiste:

1. **Una base de datos personal soberana** — tus datos son tuyos, no de OpenAI ni de Anthropic
2. **Búsqueda semántica** — encuentra cosas por significado, no por palabras exactas
3. **Portable entre IAs** — Claude, ChatGPT, y cualquier otro que soporte MCP usan la misma memoria
4. **Captura automática** — cada thought se etiqueta automáticamente con metadata
5. **Costo ~$0/mes** — tier gratuito de Supabase + centavos de OpenRouter

### Próximo paso

Ejecutar la **Memory Migration**: traer a tu BrainOS todo lo que tus IAs ya saben de ti. Esto se hace con un Companion Prompt específico que le pide a la IA que exporte su conocimiento sobre ti en forma de thoughts capturables.

---

## Troubleshooting (Resolución de problemas)

| Problema | Causa probable | Solución |
|----------|---------------|----------|
| Las herramientas no aparecen en Claude Desktop | Connector no activado para la conversación | "+" → Connectors → verificar que BrainOS está ON |
| Error 401 | La clave de acceso no coincide | Verificar que `?key=` en la URL coincide exactamente con MCP_ACCESS_KEY en secrets |
| "Permission denied for table thoughts" | Falta el GRANT del paso 2.5 | Ejecutar el SQL del paso 2.5 en Supabase SQL Editor |
| La búsqueda no devuelve nada | No hay thoughts capturados aún | Capturar al menos un thought primero (paso 8 test 1) |
| ChatGPT no usa las herramientas | Developer Mode no está activo, o ChatGPT necesita instrucción explícita | Activar Developer Mode. Pedir: "Usa la herramienta search_thoughts de BrainOS para buscar X" |

---

## Historial de versiones

| Versión | Fecha | Cambio |
|---------|-------|--------|
| v1.0 | 2026-03-20 | Creación inicial. 8 pasos documentados con explicaciones para audiencia no-técnica. Basado en Build Your BrainOS (OB1) + experiencia de instalación de Victor Heredia como caso piloto. |

---

*[[Re100X-Guia-Setup-BrainOS-v01]] v1.0 — EmpowerLabs — 2026-03-20*
*Guía de instalación BrainOS para Tu Sherpa IA — Audiencia: profesionales no-técnicos*
