seashell
Servidor MCP que conecta Claude Desktop y Wave Terminal
Documentación
SeaShell
Reanuda la sesión de Claude Code de anoche desde cualquier terminal, por nombre.
Un servidor MCP + kit de herramientas de shell que conecta Wave Terminal, Claude Desktop y Claude Code — convirtiendo el trabajo multitab en terminal en codificación colaborativa fluida con IA.
Inicio rápido · Instalación · Comandos · Limitaciones · FAQ
Solo macOS. SeaShell está diseñado para macOS (Swift, APIs de Darwin) con Wave Terminal y Claude Desktop / Claude Code. No se compila ni se ejecuta en Linux o Windows.
Inicio rápido
# 1. Clone and build
git clone https://github.com/M-Pineapple/seashell ~/Github/seashell
cd ~/Github/seashell && ./build.sh
# 2. Connect Claude and install `hey`
# Register the MCP server (Desktop config and/or `claude mcp add`. See Installation.)
cd examples/wave-config && ./install.sh
claude auth login
# 3. Resume a session
hey continue with <some-project>
Los hooks, el daemon opcional y hey what's the latest in <project>? están en Instalación.
Qué es
SeaShell es un servidor Model Context Protocol (Swift) más un pequeño conjunto de comandos de shell que juntos te dan tres cosas:
- Mensajes asíncronos entre terminales. Deja una nota para Claude desde cualquier bloque de Wave Terminal; recoge la respuesta en otro.
seashell-msg,seashell-ask. - Reanuda cualquier sesión de Claude Code por nombre. Aléjate de una sesión de codificación profunda en el modo Code de Claude Desktop anoche, abre Wave esta mañana, escribe
hey continue with <project>— misma conversación, misma memoria.hey,seashell-sessions. - Respuestas autónomas opcionales mediante un daemon. Sin que toques un chat, un pequeño daemon lanza
claude -pen el directorio correcto del proyecto y responde a tu bandeja de entrada. Usa tu suscripción de Claude — sin clave API.
Las tres se combinan. Puedes mezclarlas y combinarlas.
✨ Característica destacada: hey continue with <project>
$ hey continue with myapp
🔄 Resuming session a1b2c3d4 (project: myapp)...
> What's the latest update on the auth refactor?
We finished extracting the AuthService. Tests pass. Next is wiring it
into the API layer — I have a draft in routes/auth.py on line 142.
Want me to walk through it?
Esa es una terminal nueva. El mismo historial de conversación que la sesión en modo Code de Claude Desktop de anoche. Memoria completa del proyecto. Coincidencia difusa — hey continue with ma también funciona.
Cada proyecto tiene una sesión principal fijada en <project>/.seashell-inbox/primary-session.txt, por lo que hey continue with <project> siempre te lleva a la misma conversación — incluso si has creado múltiples sesiones paralelas para el mismo repositorio. La fijación se establece automáticamente la primera vez que seashell-init (la sesión existente más grande gana) o en el primer inicio de claude en ese directorio. Vuelve a fijar cualquier sesión en cualquier momento con seashell-sessions promote <id>.
Instalación
1. Instala Wave Terminal
Descarga Wave Terminal y ábrelo una vez.
2. Instala Claude Desktop y/o Claude Code CLI
Querrás al menos uno de:
- Claude Desktop — la aplicación GUI de claude.ai/download. Úsalo para chat general. El modo "Code" aquí guarda sesiones en disco y ES reanudable desde SeaShell.
- Claude Code CLI — instala vía npm:
npm install -g @anthropic-ai/claude-code. Esto es lo quehey continue withrealmente invoca (víaclaude --resume <id>).
La mayoría de usuarios quieren ambos.
3. Compila SeaShell
git clone https://github.com/M-Pineapple/seashell ~/Github/seashell
cd ~/Github/seashell
./build.sh
build.sh produce .build/release/seashell (~16 MB).
4. Registra el servidor MCP con Claude
Necesitas registrar SeaShell con cualquier cliente de Claude que uses. Son registros separados.
a) Claude Desktop
Edita ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"seashell": {
"command": "/absolute/path/to/seashell/.build/release/seashell",
"args": ["--port", "9876"]
}
}
}
Reinicia Claude Desktop. Las más de 60 herramientas de SeaShell aparecen en la lista de herramientas disponibles.
b) Claude Code CLI
claude mcp add --scope user seashell \
/absolute/path/to/seashell/.build/release/seashell -- --port 9879
El puerto diferente (9879) evita un conflicto si ejecutas invocaciones de Desktop y CLI en paralelo. --scope user significa que el registro es global — visible desde cualquier directorio.
5. Inicia sesión en tu suscripción de Claude
claude auth login
Esto abre un navegador para OAuth en tu cuenta de Claude.ai. No se necesita clave API — claude -p (y el daemon opcional) se alimenta de tu suscripción Pro/Max mediante esta autenticación.
6. (Opcional pero recomendado) Instala el paquete de ejemplo
cd ~/Github/seashell/examples/wave-config
./install.sh
Esto guarda una instantánea de tus configuraciones existentes de fish + Wave en ~/.seashell-backups/<timestamp>/, y luego instala:
~/.local/bin/seashell-msg,seashell-ask,seashell-init~/.local/bin/hey,seashell-sessions,seashell-setup-hooks~/.local/bin/seashell-session-start,seashell-post-tool-use(hooks de Claude Code)~/.config/fish/(una configuración funcional de fish con enrutamiento de lenguaje natural, atuin, fastfetch, sincronización de temas)~/.config/fastfetch/config.jsonc~/Library/LaunchAgents/dev.seashell.theme-sync.plist(claro/oscuro automático para Wave)
7. (Opcional) Conecta los hooks de Claude Code
seashell-setup-hooks
Añade dos entradas a ~/.claude/settings.json:
- Hook SessionStart — registra cada REPL interactivo de
claudeen~/.seashell/sessions/<id>.jsoncon etiqueta de proyecto e ID de bloque de Wave - Hook PostToolUse — añade cada llamada de herramienta a
~/.seashell/sessions/<id>/activity.logy actualiza un puntero de "archivo actual" cuando Claude hace Edit/Write
Los hooks solo se activan para sesiones TTY interactivas (un REPL real de claude dentro de un bloque de Wave). NO se activan para invocaciones de claude -p. El comando seashell-sessions de SeaShell funciona de todos modos porque recurre a escanear ~/.claude/projects/.
8. (Opcional) Instala el daemon autónomo
cd ~/Github/seashell/examples/seashell-daemon
./install.sh
El daemon consulta la bandeja de entrada de cada proyecto cada 5 segundos. Cuando llega algo, lanza claude -p desde el directorio de ese proyecto para leer y responder. Usa tu suscripción de Claude mediante la autenticación CLI del paso 5.
Consulta examples/seashell-daemon/README.md para más detalles.
Comandos que usarás a diario
hey — punto de entrada en lenguaje natural
hey continue with myapp # resume project's latest session
hey resume ma # fuzzy match (initials work)
hey let's work on the seashell project # natural language continuation
hey what's the next thing on the refactor? # routes to inbox (waits for reply)
swift build 2>&1 | hey "fix these errors" # pipe + ask
Si las primeras palabras parecen una intención de reanudar sesión (continue, resume, let's work on, go back to, pick up), hey ejecuta claude --resume <id>. De lo contrario, pasa a seashell-ask.
seashell-sessions — ve tus sesiones de Claude Code
seashell-sessions # list everything
seashell-sessions latest <name> # print the most recent session id matching <name>
seashell-sessions primary <name> # print the project's pinned primary session id
# (falls back to latest if none pinned)
seashell-sessions promote # pin most-recent session as primary for $PWD
seashell-sessions promote <id> # pin a specific session (project inferred from its cwd)
seashell-sessions show <id> # full metadata for one session
seashell-sessions resolve <name> # fuzzy-match and print the best id
Lee de TRES fuentes:
~/.seashell/sessions/— sesiones registradas por hooks (marcador ★ enlist)~/.claude/projects/<encoded-cwd>/<id>.jsonl— descubiertas en el sistema de archivos (cada sesión, cada proyecto)~/Library/Application Support/Claude/claude-code-sessions/<account>/<bridge>/local_*.json— envoltorios de sesión de Claude Desktop, que aportan los títulos amigables de Desktop y el indicador de archivado
Esta lectura de tres fuentes significa que la coincidencia difusa también funciona con los títulos de Desktop: hey continue with the current trader pro encontrará una sesión titulada Current Trader Pro Development Session en Desktop, incluso si el nombre base de su cwd en disco (p. ej. Github) no coincidiría. Las sesiones archivadas reciben un marcador A en list y se excluyen de la coincidencia difusa por defecto — para que un experimento archivado hace tiempo no pueda resucitarse por accidente.
La sesión principal fijada vive en <project>/.seashell-inbox/primary-session.txt y es lo que hey continue with <project> reanuda.
seashell-msg — deja una nota a Claude
seashell-msg "compare the test output to what we discussed"
swift build 2>&1 | seashell-msg "fix these errors"
seashell-msg --file /tmp/build.log "investigate this"
seashell-msg --global "skip cwd routing"
Enruta automáticamente al ancestro .seashell-inbox/ más cercano; recurre a ~/.seashell/inbox.jsonl.
seashell-ask — pregunta bloqueante
seashell-ask "what's the status of the refactoring?" # blocks up to 600s
seashell-ask --timeout 60 "did the build pass?" # custom timeout
seashell-ask --no-wait "post and exit" # fire-and-forget with reply token
Publica un mensaje con un reply_token, consulta una respuesta coincidente en replies.jsonl, imprime cuando la encuentra.
seashell-mirror-mcp — mantén sincronizados los servidores MCP de CLI y Desktop
seashell-mirror-mcp --dry-run # preview what would be added (env values redacted)
seashell-mirror-mcp --list # just print the diff
seashell-mirror-mcp # apply: clone Desktop MCP entries to the CLI (additive)
seashell-mirror-mcp --update # force re-sync EVERY Desktop server (picks up rotated tokens,
# env-var changes, command edits). Removes + re-adds each entry.
# Doesn't touch CLI-only servers (e.g. seashell).
Claude Desktop y Claude Code CLI usan archivos de configuración separados para el registro del servidor MCP (claude_desktop_config.json vs ~/.claude.json), aunque comparten el mismo almacenamiento de sesiones .jsonl. Así que una sesión reanudada vía hey continue with <project> puede carecer de herramientas que Desktop tiene — p. ej. puedes preguntar a Claude sobre Trello en Desktop pero la sesión CLI reanudada no tiene MCP de Trello. Este script refleja Desktop → CLI (solo aditivo, nunca elimina), haciendo que la superficie de herramientas coincida. Idempotente y seguro de re-ejecutar cada vez que añadas un nuevo servidor en Desktop.
La salida de prueba en seco redacta valores de entorno para claves que parecen secretos (cualquier cosa que coincida con los componentes KEY, TOKEN, SECRET, PASSWORD, API, AUTH, CREDENTIAL, PAT). Las llamadas reales de claude mcp add usan los valores reales de tu configuración de Desktop.
seashell-init — registra un proyecto
cd ~/Github/your-project
seashell-init
Crea .seashell-inbox/, registra el proyecto en ~/.seashell/projects.jsonl, escribe (o extiende) CLAUDE.md con una pista de bandeja de entrada.
Superficie de herramientas MCP (más de 60 herramientas)
Agrupadas por nivel. Usadas por Claude (en Desktop, en REPLs de claude, en el daemon) — no las escribes tú.
Bandeja de entrada (Nivel A — seguro)
read_user_inbox,inbox_count,inbox_history,reply_to_user,read_my_replies
Vistazo entre sesiones (Nivel A — seguro)
read_session_transcript— lee los N turnos más recientes de la sesión principal de cualquier proyecto (o cualquier sesión por id) sin reanudarla. Permite que Claude Desktop responda "¿cuál es el estado del proyecto X?" citando la transcripción real en lugar de adivinar.
Configuración directa de Wave (Nivel A lectura / Nivel B escritura)
wave_get_settings,wave_set_setting,wave_get_widgets,wave_create_widget,wave_update_widget,wave_delete_widget,wave_get_ai_presets,wave_set_ai_preset,wave_set_theme,wave_set_appearance,wave_get_backgrounds
Herramientas de bloque auxiliar de Wave (Nivel A lectura / Nivel B escritura)
wave_list_workspaces,wave_list_blocks,wave_get_scrollback,wave_get_block_meta,wave_set_block_meta,wave_create_block,wave_delete_block,wave_run_in_block,wave_view_file,wave_edit_file
Secretos de Wave (Nivel C — aprobación explícita requerida)
wave_secret_list,wave_secret_set,wave_secret_get,wave_secret_delete- Cada herramienta de secretos necesita
approved=truey unreasonno vacío.wave_secret_getretiene el valor en texto plano a menos queSEASHELL_ALLOW_SECRET_READ=1esté configurado en el entorno del servidor.
Ejecución de comandos
execute_command,execute_with_auto_retrieve,execute_with_streaming,execute_pipeline,get_command_output,list_recent_commands
Plantillas, perfiles, entorno
save_template,run_template,list_templates,save_workspace_profile,load_workspace_profile,list_workspace_profiles,get_environment_context,capture_environment,diff_environment
Consulta docs/ARCHITECTURE.md para la tabla completa de niveles.
Limitaciones
Estas no son errores — son realidades arquitectónicas que vale la pena conocer de antemano.
| Limitación | Por qué |
|---|---|
No puedes apuntar a un chat específico de Claude Desktop con seashell-msg / seashell-ask. El servidor MCP se comparte entre todos los chats de Desktop — no hay un ID de chat expuesto a MCP. | La integración MCP de Claude Desktop ejecuta un servidor MCP compartido por entrada de configuración, sin identificador por chat. La solución: usa el daemon (Claude con alcance de proyecto por bandeja de entrada) o usa hey continue with <project> para reanudar una sesión de Claude Code. |
La continuidad funciona solo para sesiones de Claude Code. El modo "Chat" y el modo "Co-work" de Claude Desktop no se pueden reanudar. El modo "Code" de Claude Desktop SÍ — persiste en el mismo almacenamiento ~/.claude/projects/ que la CLI. | Las transcripciones de Chat y Co-work son internas de Desktop. El modo Code comparte el formato abierto .jsonl con la CLI. Usa el modo Code si quieres continuidad entre días y entre clientes. |
Los hooks (SessionStart, PostToolUse) se activan solo en sesiones TTY interactivas. NO se activan para invocaciones de claude -p. | Este es un comportamiento de Claude Code que aceptamos. El seashell-sessions de SeaShell recurre a escanear ~/.claude/projects/ para que reanudar por nombre funcione igualmente. El registro de actividad y los bloques laterales solo se llenan durante sesiones interactivas. |
Los bloques laterales (cola de actividad + vista previa de código en vivo) solo aparecen desde Wave Terminal. Usan wsh createblock, que requiere WAVETERM_JWT. | El hook verifica la variable de entorno antes de invocar wsh. Cuando inicias claude fuera de Wave (p. ej., Terminal.app normal), los bloques laterales se omiten silenciosamente; todo lo demás sigue funcionando. |
Las sesiones claude -p del daemon autónomo no actualizan el chat abierto de Claude Desktop en tiempo real. | Claude Desktop mantiene su propio estado en memoria. Los nuevos turnos añadidos al .jsonl desde claude --resume -p solo se vuelven visibles después de que Desktop actualice o reabra la sesión. Si tienes una sesión abierta Y el daemon escribe en ella al mismo tiempo, el último que escribe gana en el archivo. Elige uno u otro para que sea "en vivo". |
| El uso de alto volumen puede alcanzar los límites de tarifa de la suscripción de Claude.ai. | El daemon agrupa un claude -p por proyecto por ciclo de sondeo (5 s por defecto). Para uso típico, esto se mantiene bajo los límites. Para cargas pesadas, aumenta SEASHELL_DAEMON_POLL. |
| La lista de comandos bloqueados es una protección contra errores, no un límite de seguridad. | Coincide con el texto del comando, por lo que un llamador decidido puede reformular o codificar un comando. Conecta SeaShell solo a clientes en los que confíes. |
| Sin sincronización entre máquinas de la bandeja de entrada o del registro de sesiones. | Todo el estado vive bajo ~/.seashell/ y ~/.claude/projects/. Podrías enlazar simbólicamente estos en iCloud Drive, pero no está probado. |
Preguntas frecuentes
¿Por qué no se activó mi hook SessionStart?
Los hooks se activan solo para sesiones TTY interactivas. Si iniciaste Claude con claude -p "..." (no interactivo) o canalizaste stdin a claude, el hook se omite. Ejecuta claude normalmente dentro de un bloque de Wave Terminal para activarlo.
¿Cuál es la diferencia entre el modo "Code" de Claude Desktop y la CLI de Claude Code?
Usan el mismo formato de archivo de conversación (~/.claude/projects/<encoded-cwd>/<uuid>.jsonl). Cualquiera puede leer/escribir una sesión. Así que puedes:
- Iniciar en el modo Code de Desktop, reanudar en Wave con
hey continue with <project>✅ - Iniciar en el REPL de
claudedentro de Wave, verlo en la barra lateral del modo Code de Desktop después ✅ - Alternar entre clientes en la misma conversación ✅
No puedes reanudar sesiones del modo "Chat" o "Co-work" de Desktop — se almacenan en otro lugar y no están expuestas.
¿Por qué dos registros de servidor MCP (uno para Desktop, otro para CLI)?
Claude Desktop y la CLI de Claude Code mantienen configuraciones MCP separadas. Desktop lee ~/Library/Application Support/Claude/claude_desktop_config.json; la CLI lee ~/.claude.json. Registramos en puertos diferentes (9876 vs 9879) para que no colisionen si ambos inician SeaShell a la vez.
¿Cuál es la diferencia entre seashell-msg y hey?
seashell-msg "..."siempre publica en la bandeja de entrada (dispara y olvida).seashell-ask "..."publica y bloquea esperando una respuesta.hey ...es más inteligente: si el mensaje parece una solicitud de reanudación de sesión, haceclaude --resume; de lo contrario, actúa comoseashell-ask.
Piensa en hey como el paraguas amigable; seashell-msg/seashell-ask son las primitivas de nivel inferior.
¿El daemon cuesta dinero?
El daemon genera claude -p, que usa tu suscripción de Claude.ai (Pro o Max), no la API. Sin facturación por token. Alcanzas los límites de tu suscripción, no tu billetera. Si no tienes suscripción, el daemon no funcionará — instala Claude Code desde claude.ai.
¿Puedo usar esto sin Wave Terminal?
En su mayoría sí. Las herramientas MCP funcionan en cualquier cliente. Los comandos de shell (hey, seashell-msg, etc.) funcionan en cualquier terminal. Los bloques laterales (cola de actividad + vista previa de código en vivo) requieren el wsh createblock de Wave — se omiten silenciosamente si se ejecutan fuera de Wave.
¿Qué pasa si inicio dos REPLs de claude en el mismo directorio de proyecto?
Cada uno obtiene su propio UUID, su propio archivo .jsonl, su propia conversación. Son independientes. hey continue with <project> reanuda el más recientemente activo.
¿Cómo hago que mi comando de Wave Terminal se ejecute autónomamente sin que yo revise?
Instala el daemon (paso 8). Entonces cualquier seashell-ask de cualquier bloque será respondido por claude -p en ~5 segundos, sin necesidad de chat.
¿Cómo desinstalo?
# Daemon
launchctl unload ~/Library/LaunchAgents/dev.seashell.daemon.plist
rm ~/Library/LaunchAgents/dev.seashell.daemon.plist
rm ~/.local/bin/seashell-daemon
# Theme sync
launchctl unload ~/Library/LaunchAgents/dev.seashell.theme-sync.plist
rm ~/Library/LaunchAgents/dev.seashell.theme-sync.plist
# Shell commands and hooks
rm ~/.local/bin/seashell-* ~/.local/bin/hey
# Hooks from Claude config (manual edit)
# Open ~/.claude/settings.json and remove the SeaShell entries from the "hooks" key
# State
rm -rf ~/.seashell
# MCP server registrations (manual)
# Remove "seashell" entry from ~/Library/Application Support/Claude/claude_desktop_config.json
# claude mcp remove seashell
# Restore old fish config
mv ~/.config/fish ~/.config/fish.removed
mv ~/.seashell-backups/<timestamp>/fish ~/.config/fish
¿Cómo puedo ver qué está haciendo el daemon ahora mismo?
tail -f /tmp/seashell-daemon.log
Verás cada ciclo de sondeo, cada claude -p generado y el tiempo de respuesta de Claude.
¿Puede el daemon hablarse a sí mismo? (es decir, bucle infinito)
El claude -p del daemon está restringido a cuatro herramientas: inbox_count, inbox_history, read_user_inbox, reply_to_user. No puede publicar nuevos mensajes en la bandeja de entrada — solo consumir y responder.
¿Qué hago si mi hook se activó incorrectamente / algo se rompió / quiero reiniciar?
Elimina ~/.seashell/sessions/<bad-id>/ y ~/.seashell/sessions/<bad-id>.json. El próximo claude interactivo se registrará de nuevo. Tu historial de ~/.claude/projects/ se conserva.
¿Por qué mi bandeja de entrada muestra mensajes que no envié?
Lo más probable es que tu claude -p (p. ej., del daemon) llamó a read_user_inbox y devolvió mensajes de la bandeja de entrada de otro cwd. SeaShell agrega bandejas de entrada de todos los proyectos conocidos + global por defecto. Usa inbox_count para ver el desglose por proyecto.
¿Dónde reporto errores?
Abre un issue en github.com/M-Pineapple/seashell/issues.
Arquitectura y documentación
docs/ARCHITECTURE.md— Resumen del sistema, capas, superficie de herramientas MCP, modelo de objetos de Wavedocs/INBOX.md— Diseño de almacenamiento, reglas de enrutamiento, arquitectura del daemon, solución de problemasdocs/WAVE_INTEGRATION.md— Cómo habla SeaShell con Wave:wsh,WAVETERM_JWT, mecanismo RPCdocs/HELPER_PROTOCOL.md— Protocolo de cable entre el servidor externo y el helper dentro de Wave
Estructura del proyecto
seashell/
├── README.md ← you are here
├── LICENSE ← MIT
├── Package.swift ← Swift package manifest
├── build.sh / clean.sh ← build scripts
├── setup.sh ← post-clone bootstrap
├── assets/logo.svg, demo.gif ← logo + README demo (regenerate with docs/demo/record.sh)
│
├── Sources/
│ ├── Seashell/ ← MCP server, tool handlers, Wave adapter
│ │ ├── InboxHandlers.swift ← inbox tools (read/count/history/reply/read_my_replies)
│ │ └── … ← 30+ other handler files
│ └── ConfigManager/ ← standalone config-management binary
├── Tests/SeashellTests/
│
├── helper/seashell-helper ← in-Wave Python helper (TCP proxy to wsh)
├── config/ ← Claude Desktop config template
├── docs/ ← architecture, INBOX, integration, helper protocol
│ ├── demo.tape ← VHS script for assets/demo.gif
│ └── demo/ ← fixtures + record.sh
├── prompts/ ← AI-assisted configuration prompts
│
└── examples/
├── wave-config/
│ ├── bin/ ← shell commands: hey, seashell-msg/ask/init/sessions/setup-hooks
│ ├── hooks/ ← Claude Code SessionStart + PostToolUse scripts
│ ├── fish/ ← starter fish stack
│ ├── fastfetch/ ← system-info banner config
│ ├── wave/ ← Wave widgets/settings templates
│ ├── theme-sync/ ← auto light/dark switcher
│ └── install.sh ← installs all the above into your $HOME
└── seashell-daemon/ ← autonomous inbox responder via claude -p
Agradecimientos
- Wave Terminal — el terminal alrededor del cual se construye SeaShell. De código abierto, basado en bloques, profundamente scriptable.
- Anthropic — por el Model Context Protocol, Claude Desktop y la CLI de Claude Code.
- fish shell, atuin, starship, zoxide, fastfetch — pequeñas herramientas que hacen que la configuración de ejemplo valga la pena.
- Ollama + el equipo de Qwen — por el LLM local que impulsa la capa opcional de fish en lenguaje natural.
Más servidores MCP de M-Pineapple
Otros servidores MCP en este portafolio:
- Claude Project Coordinator. Rastrea proyectos de Xcode, estado, stack tecnológico y salud.
- CryptoAnalysisMCP. Análisis técnico de criptomonedas para Claude Desktop.
- Warp Command Runner. Dale a cualquier IA de chat una terminal real.
- Msty Admin MCP. Administra Msty Studio Desktop.
- Member Berries. Apple Calendar, Notes y Reminders con personalidad.
- TextEdit MCP. Documentos RTF formateados mediante TextEdit de macOS.
- HubSpot Auditor. Auditoría de portal de HubSpot de solo lectura.
Si esto te ahorra tiempo, una estrella ayuda a otros a encontrarlo.
💖 Apoya este proyecto
Si SeaShell ha ayudado a mejorar tu flujo de trabajo de desarrollo o te ha ahorrado tiempo, considera apoyar su desarrollo:
Tu apoyo me ayuda a:
- Mantener y mejorar SeaShell con nuevas funciones
- Mantener el proyecto de código abierto y gratuito para todos
- Dedicar más tiempo a atender solicitudes de usuarios y correcciones de errores
- Explorar nuevas integraciones y funciones
¡Gracias por considerar apoyar mi trabajo! 🙏
Licencia
MIT — consulta LICENSE.
Construido con 🐚 por Pineapple 🍍
