Crea tu propia interfaz para Slack con slk
Tabla de contenidos
Slack abierto en una pestaña del navegador. O en una app de escritorio que se come medio giga de RAM para enseñarte quince mensajes y un gif de un gato.
Y tú, mientras, con la terminal abierta todo el día.
slk propone juntar las dos cosas: un cliente de Slack completo que vive en la terminal, escrito en Go, que se maneja con el teclado al estilo Vim. Lo he probado a fondo y tiene una gracia extra: no tengo cuenta de Slack. Así que, en lugar de enseñarte capturas sacadas de su README, he montado un workspace propio, con canales en español y la paleta de colores de Web Reactiva, y todo lo que ves en este artículo sale de ahí.
En este artículo vas a encontrar:
- Qué es slk y qué problema intenta resolver frente a la app oficial
- Cómo se conecta a Slack sin crear una app ni pedir permisos al administrador (y qué riesgo tiene eso)
- Cómo lo puedes probar sin cuenta de Slack gracias a su modo demo
- Los pasos y los prompts que usé para montar mi propio workspace con un agente
- Un recorrido por la interfaz: canales, buscador, hilos, ventanas divididas, temas y varios workspaces
¿Qué es slk y por qué alguien querría Slack en la terminal? ¶
slk es un cliente de Slack para la terminal (una TUI, terminal user interface) que pretende sustituir a la app de escritorio en el día a día. Lo mantiene Grant Ammons, es código abierto con licencia MIT y está escrito en Go con bubbletea y lipgloss, las librerías de Charm para interfaces de texto.
Su argumento principal es el peso. Según el README del proyecto, el binario ocupa unos 19 MB en disco y una sesión con varios workspaces conectados consume unos 60 MB de RAM, frente a los 500 MB a 1,5 GB que el propio README atribuye al cliente oficial. No hay Electron ni Chromium ni node_modules.
Hay más motivos para mirarlo:
- Teclado primero. Modos NORMAL, INSERT y COMMAND como en Vim:
j/kpara moverte,ipara escribir,Escpara salir. - Varios workspaces a la vez. Todos se quedan conectados en paralelo y saltas entre ellos con las teclas
1a9. - Temas. Trae 59 de serie y acepta temas propios en ficheros TOML.
- Tiempo real. Mensajes, ediciones, reacciones y el aviso de «está escribiendo» llegan por WebSocket.
Y tiene recorrido: el repositorio pasa de los 2.600 commits y la última versión publicada, la v0.32.0, salió el 8 de noviembre de 2026.

Esa es la primera captura de Slack Malandriner, el workspace de pruebas que monté para este artículo. A la izquierda, el carril de workspaces; en medio, la barra lateral con secciones y canales; a la derecha, los mensajes con sus reacciones y avatares. Lo de arriba en mostaza y el borde con sombra sólida son el marco de las capturas. Todo lo de dentro es slk tal cual.
¿Cómo se conecta slk a Slack sin crear una app? ¶
slk reutiliza tu sesión de Slack, no un token de bot ni un flujo OAuth. Lee la sesión de la app de escritorio que ya tienes iniciada, o la de tu navegador si no hay app instalada, y habla con Slack usando el mismo protocolo interno que el cliente web oficial.
En la práctica, el alta de un workspace va así:
- Inicias sesión en la app de escritorio de Slack, como siempre.
- Ejecutas
slk --add-workspace. - slk lista los workspaces en los que tienes sesión y eliges los que quieres.
Si estás en un servidor, un contenedor o por SSH, sin app de escritorio, hay un plan B: slk --add-workspace --browser. Abres app.slack.com, vas a las herramientas de desarrollo, copias como cURL cualquier petición a /api/ y la pegas en slk. Esa petición lleva dentro el token xoxc- y la cookie d de tu sesión, que es todo lo que slk necesita.
Lo bueno: no necesitas crear una Slack App ni que nadie la apruebe. Lo malo viene justo de ahí.
⚠️ slk no es un cliente oficial. Su propia wiki avisa de que usarlo «puede violar los Términos de Servicio» de Slack, de que Slack puede romper el protocolo o invalidar los tokens en cualquier momento y de que lo uses «bajo tu propio riesgo» en workspaces donde eso sea aceptable para ti y para tus administradores. En la empresa, pregunta antes.
Hay otro detalle que conviene saber. Las sesiones que saca del navegador duran lo que dure esa sesión: si cierras sesión en el navegador o Slack rota el token, toca repetir --add-workspace. Las de la app de escritorio, en cambio, se renuevan solas en cada arranque. En Enterprise Grid la documentación recomienda la vía de escritorio porque evita las alertas de «sesión anómala» que puede disparar extraer tokens del navegador.
¿Se puede probar slk sin tener cuenta de Slack? ¶
Sí, y de una forma más limpia de lo que esperaba. Mi primera idea fue la de siempre: levantar un servidor que imite la API de Slack y apuntar slk hacia él. Hay librerías que emulan la API pública para probar bots.
No sirve, por dos motivos que encontré leyendo el código:
- slk no usa la API pública de bots. Se hace pasar por el cliente web: llama a métodos internos como
client.counts, a un servicio de caché llamadoedgeapi.slack.comy abre su WebSocket contrawss-primary.slack.com. Ningún emulador de los que conozco reproduce eso. - Las direcciones están fijadas en el código. No hay flag ni variable de entorno para cambiarlas, y la función que deduce la URL de la API descarta cualquier host que no termine en
slack.com.
Para engañarlo habría que parchear slk e interceptar DNS y certificados. Demasiado trabajo para una demo y poco honesto como resultado.
Pero leyendo cmd/slk/main.go apareció un flag que no sale en la ayuda: --demo. El autor lo usa para grabar los GIF del README. Arranca slk contra unos workspaces inventados que viven en internal/demo/, y según el propio código no lee configuración, ni tokens, ni caché, ni toca la red.
Trae seis escenarios con guion: hero, compose, reactions, threads, themes y workspaces. Cada uno hace que pasen cosas mientras navegas: alguien empieza a escribir, llega un mensaje, otro reacciona. Si respondes, alguien te contesta a los dos segundos.
🔑 El modo demo no es una maqueta: es la interfaz real de slk con un proveedor de datos falso en lugar de Slack. Los atajos, los temas, los hilos y las ventanas funcionan igual.
Un aviso antes de seguir. Al estar oculto, nadie promete que --demo siga existiendo ni que funcione igual en futuras versiones. Para probar, perfecto. Para depender de él, no.
Si te gusta trastear con herramientas así antes de que se pongan de moda, cada domingo seleccionamos 12 recursos sobre herramientas y productividad con IA. Gratis y ya somos +7.200.
Apúntate gratis →¿Qué pasos seguí para montar Slack Malandriner? ¶
Lo monté con un agente de programación, pidiéndole las cosas por partes. Apenas escribí código a mano: la mayor parte del trabajo fue decidir qué quería ver y revisar lo que salía. Estos son los pasos con los prompts que usé, recortados a lo esencial.
Paso 1: compilar slk desde el código ¶
Necesitas Go instalado (yo usé la 1.26). El modo demo está en el código fuente, así que lo más directo es clonar el repositorio y compilar.
Clona github.com/gammons/slk en una carpeta temporal y compílalo con go build.
No instales nada fuera de esa carpeta.
Un detalle que me pasó: el modo automático de mi agente bloqueó la compilación la primera vez por tratarse de código externo. Tiene sentido. Compilar y ejecutar código de terceros es una decisión tuya, no del agente, así que dale permiso solo si has revisado de dónde viene.
Paso 2: arrancar el modo demo ¶
Ejecuta slk con --demo hero dentro de una sesión de tmux y enséñame
lo que aparece en pantalla.
En pocos segundos tienes la interfaz completa con dos workspaces de ejemplo en inglés. Es el momento de navegar un poco para hacerte una idea antes de tocar nada.
Paso 3: cambiar los datos por los tuyos ¶
Los workspaces, canales, personas y mensajes de la demo están en internal/demo/fixtures.go. Los textos que aparecen «en directo» durante los escenarios, en internal/demo/scenarios.go. Es código Go, pero se lee casi como un fichero de datos.
Reescribe los fixtures de la demo de slk en español. Primer workspace:
"Slack Malandriner", una comunidad de programación con secciones
Aprendizaje y Comunidad. Segundo: "Mi side project". Mantén los IDs
para que los escenarios sigan funcionando y traduce los mensajes que
lanzan los escenarios.
La parte de mantener los IDs es la que importa. Los escenarios buscan canales y personas por su identificador, así que si los cambias el guion deja de disparar.
Yo cambié una cosa más: la demo traía un meme conocido como imagen de ejemplo, y lo sustituí por la gráfica que genera el propio código, con los colores de la casa. Una imagen de terceros en tus capturas es un problema que no necesitas.
Pedirle las cosas al agente por partes también tiene método
En la lección de proposal y spec ves cómo escribir primero qué quieres y por qué, para que el agente no improvise. Es el ciclo de SDD con OpenSpec, entero y sobre un proyecto que ya existe.
Entra en el curso gratis →Paso 4: crear el tema de Web Reactiva ¶
slk acepta temas propios en ~/.config/slk/themes/*.toml. Cada tema es un nombre y una lista de colores: primario, acento, fondo, texto, barra lateral, selección…
Crea dos temas TOML para slk con la paleta de tailwind.config.js:
uno oscuro, "Web Reactiva", y uno claro, "Web Reactiva Claro".
Terracota como primario, mostaza para la selección de la barra
lateral con texto oscuro y lila para los nombres de usuario.
El resultado del tema oscuro tiene esta pinta (recortado):
name = "Web Reactiva"[colors]primary = "#e56a54" # terracotaaccent = "#fed757" # mostazabackground = "#1d222b"text = "#e8eaf0"username = "#b5a3e2" # lilasidebar_selected_bg = "#fed757"sidebar_selected_fg = "#1d222b"Aquí tocó un parche. El modo demo no lee tu configuración a propósito, así que tampoco carga tus temas. Le pedí al agente un cambio mínimo: que, si existe una variable de entorno con una carpeta de temas, la demo los cargue igual que lo hace slk en modo normal. Son cuatro líneas, pero son mías, no del proyecto. Si usas slk con tu cuenta de verdad, no te hacen falta: los temas de ~/.config/slk/themes/ se cargan solos.
Paso 5: sacar capturas que no parezcan de terminal cutre ¶
Este paso fue el que más me divirtió. Una captura de pantalla de la terminal depende de tu emulador, tu fuente y tu escala. Yo quería algo reproducible y con el estilo visual de la web.
La solución fue capturar el texto, no los píxeles:
- slk se ejecuta dentro de tmux con color de 24 bits (si ya usas un multiplexor para tus agentes, herdr te enseña en qué estado está cada uno).
- tmux vuelca la pantalla con sus códigos de color ANSI.
- Un script pequeño convierte esos códigos a HTML, celda a celda, con JetBrains Mono y los emojis de Noto.
- Playwright abre ese HTML (tu agente lo maneja bien con Playwright CLI, sin llenarse el contexto de capturas) y hace la captura a doble resolución, dentro de un marco sin esquinas redondeadas y con sombra sólida.
Escribe un script que capture el pane de tmux con colores (capture-pane -e),
lo convierta a HTML respetando el ancho de cada celda y los emojis anchos,
y haga una captura con Playwright dentro de un marco cuadrado con sombra
sólida y barra superior mostaza.
Hubo que ajustar dos cosas: los emojis ocupan dos celdas y descuadraban el borde derecho, y los caracteres de medio bloque (▀, ▄) que slk usa para avatares e imágenes dejaban rayas. Los resolví pintando esos bloques como fondos en CSS en lugar de confiar en la fuente.
💡 Si solo te llevas una idea de esta sección: para documentar una TUI, captura el texto y renderízalo tú. Las capturas salen nítidas, son reproducibles y puedes darles el estilo que quieras.
Para mover slk por las pantallas usé las mismas secuencias de teclas que el autor tiene en los ficheros .tape con los que graba sus GIF. Están en docs/assets/demo/ y son una chuleta estupenda de los atajos.
¿Cómo se ve slk en el día a día? ¶
Con el workspace montado toca lo divertido: recorrer la interfaz. Todo lo que sigue funciona igual con una cuenta de Slack real.
El buscador de canales ¶
Ctrl+t (o Ctrl+p) abre un buscador difuso de canales y mensajes directos. Escribes dos letras, Enter, y estás dentro. Es el atajo que más se usa y el que hace que no eches de menos el ratón.

Fíjate en que el resto de la pantalla se atenúa mientras el buscador está abierto, y en la barra de estado de abajo, que cambia a modo FIND. slk siempre te dice en qué modo estás, como Vim.
Mensajes, código e imágenes ¶
slk entiende el markdown de Slack: negritas, cursivas, código en línea y bloques de código. También pinta imágenes. En terminales con protocolo de gráficos (kitty, sixel) las muestra a resolución real; en el resto usa medios bloques, que es lo que ves aquí.

En esa captura, el último mensaje de Lucía acaba de llegar «en directo» gracias al escenario hero: primero aparece el aviso de que está escribiendo, luego el mensaje con la gráfica y, un segundo después, la reacción de Marcos. Arriba se ve el contador de respuestas del hilo y la línea new que marca dónde empiezan los mensajes sin leer.
Ventanas divididas ¶
Ctrl+w seguido de v divide el panel de mensajes en vertical, como en Vim. Así puedes tener un canal de conversación al lado de otro de avisos, por ejemplo uno de despliegues.

El panel con el foco lleva el borde terracota; el otro se queda en gris. Ctrl+w w alterna entre ventanas y Ctrl+w q cierra la actual. Los mensajes de deploybot salen como tarjetas con una barra de color a la izquierda, igual que los adjuntos de Slack.
Hilos y respuestas ¶
Enter sobre un mensaje con respuestas abre el hilo. La cabecera te dice de quién es y cuántas respuestas lleva, y Esc lo cierra.

La última respuesta, la de Jon, llegó mientras el hilo estaba abierto: es el escenario threads en acción.
Para contestar pulsas i y escribes. Si tecleas dos puntos y el principio del nombre de un emoji, aparece un autocompletado. Tab lo acepta.

La barra de estado pasa a INSERT en mostaza y el cuadro de texto se ilumina. También funcionan las menciones con @, Shift+Enter para varias líneas, Ctrl+E para escribir el mensaje en tu $EDITOR y Ctrl+V para pegar imágenes o ficheros.
Cada domingo, +7.200 developers comparten lo que van probando para trabajar mejor con la terminal y con agentes de IA. Gratis, desde 2018.
Quiero esa dinamita 🧨Varios workspaces y un tema por cada uno ¶
El carril de la izquierda muestra tus workspaces con sus iniciales. El punto amarillo junto a MS avisa de que en «Mi side project» hay algo sin leer. Pulsas 2 y estás allí.

Cada workspace puede tener su propio tema. A Slack Malandriner le puse el oscuro y al side project el claro, así que de un vistazo sé dónde estoy. Parece una tontería hasta que contestas en el workspace equivocado por primera vez.
El selector de temas ¶
Ctrl+y abre el selector de temas para el workspace activo. Los temas propios aparecen mezclados con los 59 de serie.

Alt+y y Alt+Shift+y pasan al tema siguiente y al anterior sin abrir el selector, que viene bien para probar varios seguidos.
Y si te pierdes, ? ¶
La tecla ? abre la lista completa de atajos, con buscador incluido.

Es la mejor forma de descubrir cosas que no vienen en el README: copiar el enlace permanente de un mensaje con Y, marcar posiciones con m y una letra como en Vim, exportar un hilo a Markdown con S, cambiar tu estado con Ctrl+s…
¿Cómo lo instalo para usarlo con mi Slack de verdad? ¶
Si después de la demo te convence, la instalación es corta. El proyecto ofrece varias vías:
| Sistema | Cómo instalarlo |
|---|---|
| macOS y Linux con Homebrew | brew install --cask gammons/tap/slk |
| Arch Linux | Paquete slk en AUR (mantenido por la comunidad) |
| Cualquiera con Go | go install desde github.com/gammons/slk/cmd/slk |
| Debian, Fedora, Alpine, Windows | Paquetes .deb, .rpm, .apk y zip en las releases de GitHub |
Después, slk --add-workspace y eliges tus workspaces. La configuración vive en ~/.config/slk/config.toml y todas las claves son opcionales: tema por defecto, formato de la hora, protocolo de imágenes, secciones propias de canales con patrones tipo glob, notificaciones por mención o por palabra clave.
Y un prompt para que tu agente te ahorre el paseo por la documentación:
Configura slk en ~/.config/slk/config.toml: hora en formato 24 h,
notificaciones solo para menciones y mensajes directos, y una sección
"Equipo" con los canales que empiecen por equipo-*.
Si algo falla, SLK_DEBUG=1 escribe un log detallado en slk-debug.log, en la carpeta desde la que lo lanzas. Ojo, que se vacía en cada arranque.
¿Qué no hace slk y cuándo es mejor la app oficial? ¶
slk cubre la parte de Slack que más usas, que es leer y escribir mensajes. Lo demás tiene huecos, y su wiki los declara sin rodeos.
Lo que no está previsto, según la página de Tradeoffs and Non-Goals:
- Unirte o iniciar huddles (solo enseña quién está dentro)
- Slack Connect y Workflow Builder
- Gestión de bots, apps y emojis personalizados
- Reacciones animadas, previsualización de enlaces y notificaciones dentro de la app
Puesto lado a lado con la app oficial queda así:
| slk | App oficial de Slack | |
|---|---|---|
| Consumo de memoria | Bajo (unos 60 MB, según el proyecto) | Alto (de 500 MB a 1,5 GB, según el proyecto) |
| Manejo | Teclado, modal, al estilo Vim | Ratón y teclado |
| Mensajes, hilos y reacciones | Completo | Completo |
| Huddles y llamadas | Solo ves quién está | Completo |
| Workflows y apps | No | Sí |
| Soporte oficial | Ninguno, cliente no oficial | Sí |
| Funciona por SSH | Sí | No |
¿Para quién tiene sentido? Para quien pasa el día en la terminal, usa Slack sobre todo para conversar y quiere menos ventanas y menos RAM. Si además trabajas con agentes, encaja con un terminal pensado para ellos como cmux. Si tu trabajo depende de huddles, workflows o apps integradas, slk será un complemento, no un sustituto.
Y si tu empresa tiene políticas estrictas sobre clientes de terceros, la decisión no es técnica. Pregunta.
¿Merece la pena montarte tu propio Slack de demo? ¶
Para probar slk, sí. En una tarde tienes la herramienta funcionando, has visto todos sus atajos y no has puesto tus credenciales en ningún sitio. Y si escribes documentación, preparas una charla o grabas un vídeo, un workspace inventado te ahorra un disgusto: ningún dato de tu empresa acaba en las capturas.
Lo que más me gustó del proceso fue cómo cambió el plan. Empecé pensando en emular la API y acabé leyendo el código, encontrando el modo demo y cambiando cuatro ficheros. El agente hizo casi todo el trabajo mecánico. Mi parte fue saber qué preguntar y decir «no» al meme.
¿Te animas a montar el tuyo? Si lo haces, cuéntame qué nombre le pones.
TL;DR ¶
- 🖥️ slk es un cliente de Slack para la terminal, en Go y con licencia MIT, que se maneja con atajos al estilo Vim y consume mucha menos memoria que la app oficial.
- 🔐 Se conecta reutilizando tu sesión de la app de escritorio o del navegador; no necesitas crear una Slack App, pero es un cliente no oficial y su uso puede chocar con los términos de Slack.
- 🎭 El flag oculto
--demoarranca la interfaz real con datos inventados, sin red ni credenciales: así se puede probar sin cuenta. - 🎨 Con un agente cambié los datos de la demo, creé dos temas TOML con la paleta de Web Reactiva y saqué capturas reproducibles con tmux, HTML y Playwright.
- ⚠️ No hace huddles, workflows ni gestión de apps: brilla para leer y escribir mensajes, no para todo lo demás.
Preguntas frecuentes ¶
¿Qué es slk? ¶
slk es un cliente de Slack para la terminal, escrito en Go con las librerías bubbletea y lipgloss. Ofrece mensajes en tiempo real, hilos, reacciones, imágenes, varios workspaces a la vez y atajos de teclado al estilo Vim. Es un proyecto independiente con licencia MIT, sin relación con Slack ni Salesforce.
¿Es seguro usar slk con mi cuenta de Slack? ¶
slk usa tu propia sesión y guarda los tokens en local, en ~/.local/share/slk/. El riesgo no está tanto en la seguridad como en las normas: es un cliente no oficial y su documentación reconoce que puede violar los Términos de Servicio de Slack. Úsalo solo en workspaces donde tus administradores lo acepten.
¿Necesito crear una Slack App o un token de bot para usar slk? ¶
No. slk lee la sesión de la app de escritorio de Slack con slk --add-workspace, o la de tu navegador con slk --add-workspace --browser. No hay flujo OAuth ni aprobación del administrador, y por eso mismo es un cliente no oficial.
¿Puedo probar slk sin cuenta de Slack? ¶
Sí, con el flag oculto --demo, que arranca slk contra workspaces inventados sin leer configuración ni tokens y sin conectarse a la red. Trae seis escenarios: hero, compose, reactions, threads, themes y workspaces. Como no está documentado, puede cambiar en versiones futuras.
¿Se puede usar un emulador de la API de Slack con slk? ¶
No en la práctica. slk no usa la API pública de bots, sino el protocolo interno del cliente web, con métodos propios, un servicio de caché y un WebSocket específico. Además, las URLs de Slack están fijadas en el código y no hay opción para cambiarlas.
¿Cómo creo un tema propio para slk? ¶
Crea un fichero TOML en ~/.config/slk/themes/ con un campo name y una tabla [colors] con claves como primary, accent, background, text o sidebar_selected_bg. Los colores que no definas se rellenan con los del tema oscuro por defecto. Después lo eliges con Ctrl+y.
¿Cuánta memoria consume slk frente a la app oficial? ¶
Según el README del proyecto, slk ocupa unos 19 MB en disco y usa unos 60 MB de RAM con varios workspaces conectados. El mismo README sitúa la app oficial entre 500 MB y 1,5 GB. Son cifras del propio proyecto, no una medición independiente.
¿slk funciona por SSH o en un servidor? ¶
Sí. Al ser una aplicación de terminal funciona por SSH y dentro de tmux. Para dar de alta un workspace sin app de escritorio se usa slk --add-workspace --browser, pegando una petición copiada como cURL desde las herramientas de desarrollo del navegador.
¿Qué funciones de Slack no tiene slk? ¶
No permite unirse ni iniciar huddles, no soporta Slack Connect ni Workflow Builder y no gestiona bots, apps ni emojis personalizados. Tampoco muestra previsualizaciones de enlaces ni reacciones animadas. Para mensajería del día a día está completo.
¿Cuáles son los atajos básicos de slk? ¶
Ctrl+t abre el buscador de canales, j y k mueven la selección, i entra en modo escritura y Esc sale. Las teclas 1 a 9 cambian de workspace, Ctrl+y abre el selector de temas, Enter abre un hilo y ? muestra la lista completa de atajos.
Fuentes ¶
- slk, web oficial
- Repositorio de slk en GitHub
- Wiki de slk: Setup
- Wiki de slk: Features
- Wiki de slk: Keybindings
- Wiki de slk: Tradeoffs and Non-Goals
- Releases de slk
- bubbletea y lipgloss, de Charm
🧨 Última oportunidad para recibir la dinamita que mereces sobre programación con IA el próximo domingo: Suscríbete gratis a Web Reactiva en https://webreactiva.com/newsletter
12 recursos para developers cada domingo en tu bandeja de entrada
Además de una skill práctica bien explicada, trucos para mejorar tu futuro profesional y una pizquita de humor útil para el resto de la semana. Gratis.