Zellij: Como Eu Resolvi o Gargalo de Ter Apenas Um Terminal na Minha VPS
Se você já trabalhou com uma VPS, sabe a dor que é ter apenas um terminal disponível. Você está rodando um servidor, precisa verificar logs, editar um arquivo ou rodar outro processo... e não pode. O terminal está ocupado. Sua única opção era abrir outro terminal local, fazer outra conexão SSH, e repetir isso para cada terminal que precisasse. Chato, trabalhoso e dependia totalmente da sua máquina local.
Eu vivia esse problema todo dia. Usava o terminal do painel da Hostinger para acessar minha VPS e ficava preso a uma única sessão. Se precisava rodar um servidor em uma janela e ao mesmo tempo executar um agente de IA que fazia modificações em tempo real no código, eu simplesmente não conseguia. Tinha que matar um processo para rodar outro. Era frustrante.
Até que eu conheci o Zellij.
O Que é o Zellij?
Sabe o Warp? Terminal moderno, com painéis divididos, abas, interface bonita? O Zellij é isso, só que roda diretamente dentro da sua VPS.
Ele é um multiplexador de terminal. Ele transforma aquele terminal único e limitado do painel da sua hospedagem em uma estação de trabalho completa, com várias janelas rodando lado a lado. Você instala ele direto na VPS e, a partir daí, com uma única conexão, tem acesso a quantos terminais precisar.
O Problema Que Eu Tinha
Antes do Zellij, minha rotina era assim:
- Acessava o terminal da VPS pelo painel da Hostinger
- Rodava um processo (servidor, deploy, build...)
- Precisava fazer outra coisa? Tinha que parar o que estava rodando
- A alternativa era abrir um terminal local e criar múltiplas conexões SSH, uma pra cada "janela" que eu precisasse
Isso significava depender da minha máquina local, manter várias conexões SSH abertas, e se a internet caísse, perdia tudo.
Como o Zellij Resolveu Isso
Com o Zellij instalado direto na VPS, eu acesso o terminal uma única vez (pelo painel da Hostinger, por SSH, tanto faz) e digito zellij. Pronto. A partir daí tenho múltiplos painéis e abas sem precisar de nenhuma conexão adicional.
Agora eu consigo rodar um servidor em um painel e ter um agente de IA fazendo modificações em tempo real no painel do lado. Consigo monitorar logs enquanto executo comandos. Fazer debug de código em produção sem parar nenhum processo. Rodar builds e deploys enquanto continuo editando arquivos.
Tudo em paralelo, tudo dentro da mesma sessão, sem depender de múltiplas conexões SSH.
Instalação no Ubuntu (VPS)
A instalação é rápida e não precisa de sudo. Rode esse comando no terminal da sua VPS Ubuntu:
mkdir -p ~/.local/bin &&
curl -L https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz | tar -xz -C ~/.local/bin &&
chmod +x ~/.local/bin/zellij
Se o comando zellij não for reconhecido depois da instalação, adicione o diretório ao PATH:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Para verificar se deu certo:
zellij --version
Se aparecer a versão, tá pronto. Digita zellij e começa a usar.
Funcionalidades Principais
Painéis (Panes)
Você pode dividir a tela em múltiplos painéis, tanto na horizontal quanto na vertical. Cada painel é um terminal independente.
Ctrl + pdepoisdpara dividir horizontalmenteCtrl + pdepoisrpara dividir verticalmenteCtrl + pdepoisxpara fechar o painel atual
Dá pra redimensionar, mover e navegar entre eles com atalhos de teclado.
Abas (Tabs)
Além dos painéis, dá pra criar abas pra organizar diferentes contextos de trabalho:
Ctrl + tdepoisncria uma nova abaCtrl + tdepoisrrenomeia a aba- Use as setas ou números pra navegar entre abas
Eu costumo ter uma aba chamada "Server" com o servidor rodando, outra chamada "Agent" com o agente de IA, e outra chamada "Logs" para monitoramento.
Sessões Persistentes
Essa aqui é uma das funcionalidades que mais me salvam. As sessões do Zellij persistem mesmo se sua conexão cair. Se o terminal do painel da Hostinger desconectar, basta reconectar e digitar:
zellij attach
Você volta exatamente onde parou, com todos os painéis e processos rodando. Pra quem trabalha com VPS, isso muda tudo.
Layouts Personalizados
O Zellij suporta layouts pré-definidos em arquivos KDL. Você cria um layout pro seu fluxo de trabalho e carrega ele sempre que iniciar uma sessão:
zellij --layout meu-layout.kdl
Um exemplo de layout com três painéis:
layout {
pane split_direction="vertical" {
pane
pane split_direction="horizontal" {
pane
pane
}
}
}
Cria uma vez e usa sempre. Toda vez que conectar na VPS, seu ambiente já tá organizado do jeito que você precisa.
Busca no Terminal
Com Ctrl + s você entra no modo de busca e pode pesquisar texto no output de qualquer painel. Muito bom pra revisar logs longos ou encontrar aquele erro que passou voando.
Plugins
Ele tem um sistema de plugins em WebAssembly (WASM). Já vem com alguns embutidos, como o gerenciador de sessões e o seletor de abas. A comunidade também desenvolve plugins adicionais.
Barra de Status
Na parte inferior da tela tem uma barra de status mostrando todos os atalhos disponíveis pro modo atual. Você não precisa decorar nada, tá tudo ali na tela.
Controlando o Zellij via Linha de Comando
Essa parte é onde o Zellij se diferencia de verdade. Ele não é só uma ferramenta visual pra dividir painéis. Ele tem uma CLI completa que permite controlar tudo programaticamente. Criar painéis, rodar comandos, organizar abas, tudo via scripts. E melhor: via um agente de IA como o Claude Code.
Comandos de Controle
De dentro de uma sessão, você usa zellij action pra controlar tudo:
# Criar um novo painel à direita e rodar um comando nele
zellij action new-pane -d right -- docker logs -f meu-container
# Criar um novo painel abaixo rodando o servidor
zellij action new-pane -d down -- npm run dev
# Criar uma nova aba com um nome específico
zellij action new-tab --name "Logs"
# Focar em um painel específico
zellij action focus-next-pane
# Escrever texto em um painel (simular digitação)
zellij action write-chars "ls -la"
Qualquer processo, inclusive uma IA, pode orquestrar seu ambiente de trabalho.
Claude Code Abrindo Painéis Para Você
Essa parte me surpreendeu. O Claude Code roda no terminal e tem acesso ao shell, então ele pode usar o zellij action pra criar painéis automaticamente. Eu posso pedir:
"Abre um painel ao lado para monitorar os logs do Docker enquanto você faz as alterações"
E ele executa:
zellij action new-pane -d right -- docker logs -f app-container
Um painel novo aparece do lado, já rodando o monitoramento de logs, e o Claude continua trabalhando no painel original. Sem eu tocar em nada.
Outros exemplos que eu uso no dia a dia:
# Claude abre um painel para rodar os testes enquanto edita o código
zellij action new-pane -d down -- npm test --watch
# Claude abre um painel para monitorar o uso de recursos
zellij action new-pane -d right -- htop
# Claude abre um painel, roda o servidor e continua desenvolvendo
zellij action new-pane -d down -- python manage.py runserver
O agente monta o próprio ambiente de trabalho dentro da VPS. Ele não fica preso a um único terminal esperando um processo terminar. Ele abre outro painel e continua.
Automação com Scripts
Dá pra criar scripts shell que montam todo o seu ambiente com um único comando:
#!/bin/bash
# setup-dev.sh
# Abre um painel à direita para logs do Docker
zellij action new-pane -d right -- docker compose logs -f
# Abre um painel abaixo para monitorar recursos
zellij action new-pane -d down -- htop
# Cria uma nova aba para o agente de IA
zellij action new-tab --name "AI Agent"
zellij action write-chars "claude"
Conectou na VPS? Roda ./setup-dev.sh e seu workspace tá montado em segundos.
Layouts com Comandos Embutidos
Dá pra combinar layouts KDL com comandos que executam automaticamente ao abrir:
layout {
tab name="Dev" {
pane split_direction="vertical" {
pane command="docker" {
args "compose" "logs" "-f"
}
pane split_direction="horizontal" {
pane command="htop"
pane
}
}
}
tab name="AI" {
pane command="claude"
}
}
Com zellij --layout dev.kdl, você abre o Zellij e tudo já tá rodando. Logs, monitoramento, agente de IA, cada coisa no seu painel, na sua aba.
Meu Setup Atual
Hoje, quando acesso minha VPS, meu fluxo é simples:
- Conecto pelo terminal do painel da Hostinger
- Digito
zellij(ouzellij attachse já tenho uma sessão) - Organizo meus painéis ou deixo o Claude Code montar o ambiente por mim
Meu setup típico tem quatro painéis: servidor ou documentação no canto superior esquerdo, navegação de arquivos no superior direito, Claude Code no inferior esquerdo, e um terminal livre no inferior direito pra comandos avulsos, git e deploys.
Tudo rodando em paralelo dentro de uma única sessão. Sem múltiplas conexões. Sem depender da minha máquina local.
Casos de Uso na VPS
Alguns cenários onde eu mais uso o Zellij:
- Rodar o Claude Code ou Codex em um painel enquanto o servidor roda em outro. O próprio agente pode abrir painéis adicionais conforme precisar.
- Monitorar containers Docker com
docker logs -fem um painel enquanto gerencio containers em outro. - Acompanhar logs de erro em um painel enquanto faço deploy em outro.
- Monitorar múltiplos serviços ao mesmo tempo se a VPS roda mais de um.
- Fazer pair programming remoto. Duas pessoas conectam na mesma sessão do Zellij e trabalham juntas.
- Automatizar sequências de deploy com scripts que abrem painéis, rodam comandos e monitoram resultados.
Conclusão
O Zellij mudou a forma como eu trabalho com minha VPS. Antes eu ficava limitado a um terminal por vez, matando processos ou abrindo múltiplas conexões SSH. Agora, com uma conexão só, tenho um ambiente completo com vários terminais em paralelo.
E como ele é controlável por linha de comando, o próprio Claude Code organiza meus painéis quando precisa. Abre um painel pra rodar testes, outro pra monitorar logs, e continua trabalhando no principal. A VPS deixou de ser aquele terminal limitado e virou um ambiente de desenvolvimento de verdade.
Se você usa VPS e já passou por essa frustração de ter um terminal só, instala o Zellij. Sério, depois que você começa a usar não volta mais.
Links úteis:
- Site oficial: https://zellij.dev
- Repositório no GitHub: https://github.com/zellij-org/zellij
- Documentação: https://zellij.dev/documentation
Massa de mais meu amigo
