Parte 1 — Instalacao (so precisa fazer uma vez)
Este guia assume que voce tem um servidor Ubuntu limpo (22.04 ou superior) com acesso root. Se voce acabou de criar um VPS na DigitalOcean, Hetzner, Oracle Cloud, etc., siga passo a passo.
1. Conectar ao servidor via SSH
No seu computador local, abra o terminal e conecte:
ssh root@IP_DO_SERVIDOR
Substitua IP_DO_SERVIDOR pelo IP real do seu servidor (ex: ssh root@143.198.67.42).
2. Atualizar o sistema
Primeiro, atualize a lista de pacotes e instale as versoes mais recentes:
apt update && apt upgrade -y
O que cada parte faz?
apt update— Baixa a lista atualizada de pacotes disponiveis (como atualizar o catalogo de uma loja)apt upgrade -y— Instala as versoes mais novas de tudo que ja esta instalado. O-yresponde "sim" automaticamente
3. Instalar ferramentas necessarias
apt install -y python3 python3-venv python3-pip git
| Pacote | O que e | Por que precisa |
|---|---|---|
python3 | A linguagem Python (versao 3) | O nanobot e escrito em Python |
python3-venv | Modulo para criar ambientes virtuais | Isolar as dependencias do nanobot |
python3-pip | Gerenciador de pacotes do Python | Instalar bibliotecas (litellm, telegram, etc.) |
git | Controle de versao | Baixar (clonar) o codigo do nanobot |
4. Clonar o repositorio
cd /root && git clone https://github.com/inematds/nanobot.git && cd nanobot
Isso baixa todo o codigo do nanobot para a pasta /root/nanobot/ e entra nela.
5. Criar o ambiente virtual (venv)
python3 -m venv venv
O que e um venv?
Pense no venv (virtual environment) como uma caixa isolada. Dentro dessa caixa, voce instala as bibliotecas que o nanobot precisa, sem afetar o resto do sistema.
Sem venv, se voce instalar uma versao de biblioteca pro nanobot, pode quebrar outro programa que usa uma versao diferente. Com venv, cada projeto tem sua propria caixa — sem conflitos.
Analogia: e como ter um armario separado so para as coisas do nanobot, em vez de misturar tudo na mesma gaveta.
6. Ativar o ambiente virtual
source venv/bin/activate
Depois de ativar, o prompt do terminal muda para mostrar que voce esta dentro do venv:
O (venv) no inicio confirma que a caixa esta ativa. A partir de agora, tudo que voce instalar com pip vai para dentro dessa caixa.
7. Instalar o nanobot
pip install -e .
O que cada parte faz?
pip install— Instala um pacote Python e todas as suas dependencias-e— Modo "editavel" (editable). Em vez de copiar o codigo para outra pasta, cria um atalho. Assim, se voce fizergit pullpara atualizar, as mudancas ja valem automaticamente, sem precisar reinstalar.— O ponto significa "o diretorio atual" (ou seja,/root/nanobot/). Diz ao pip para instalar o projeto que esta aqui
8. Executar o onboard
nanobot onboard
O comando onboard cria a estrutura de diretorios que o nanobot precisa para funcionar:
~/.nanobot/
+-- config.json ← Configuracao principal (criado vazio)
+-- sessions/ ← Pasta para historico de conversas
+-- workspace/ ← Area de trabalho do agente
+-- AGENTS.md ← Personalidade do agente
+-- SOUL.md ← Instrucoes profundas
+-- USER.md ← Informacoes sobre voce
+-- memory/ ← Memoria persistente
+-- MEMORY.md ← Memoria de longo prazo
9. Editar a configuracao
nano ~/.nanobot/config.json
Cole o seguinte conteudo (ajustando as chaves):
{
"llm": {
"default_model": "openrouter/qwen/qwen3-coder",
"api_key": "sk-or-v1-SUA_CHAVE_OPENROUTER_AQUI"
},
"channels": {
"telegram": {
"enabled": true,
"token": "123456789:SEU_TOKEN_TELEGRAM_AQUI",
"allowFrom": ["SEU_CHAT_ID_AQUI"]
}
}
}
Onde conseguir cada chave?
| Chave | Onde obter | Como |
|---|---|---|
api_key (OpenRouter) |
openrouter.ai/keys | Crie uma conta, va em "Keys", clique "Create Key". Comeca com sk-or-v1- |
token (Telegram) |
@BotFather no Telegram | Mande /newbot, siga as instrucoes, copie o token. Formato: 1234567890:ABCdefGHI... |
allowFrom (Chat ID) |
@userinfobot no Telegram | Mande qualquer mensagem para este bot, ele responde seu Chat ID numerico |
Para salvar no nano: pressione Ctrl+O (salvar), Enter (confirmar), Ctrl+X (sair).
10. Proteger a configuracao
chmod 600 ~/.nanobot/config.json
O chmod 600 faz com que somente o dono (root) possa ler e escrever esse arquivo. Isso e importante porque o arquivo contem suas chaves de API — se qualquer usuario do servidor pudesse ler, suas chaves estariam expostas.
11. Configurar aliases no .bashrc
Abra o arquivo .bashrc:
nano ~/.bashrc
Adicione estas duas linhas no final do arquivo:
alias nb='cd /root/nanobot && source venv/bin/activate'
alias nbhelp='cd /root/nanobot && bash help.sh'
Depois salve (Ctrl+O, Enter, Ctrl+X) e carregue as mudancas:
source ~/.bashrc
O que e o .bashrc e o que sao aliases?
O .bashrc e um arquivo que o Linux le toda vez que voce abre um terminal. Tudo que estiver la e executado automaticamente.
Um alias e um atalho — como um contato no celular. Em vez de decorar o numero completo (cd /root/nanobot && source venv/bin/activate), voce salva com um nome curto (nb) e usa so o nome.
| Alias | Equivale a | Para que serve |
|---|---|---|
nb | cd /root/nanobot && source venv/bin/activate | Ativa o ambiente do nanobot rapidamente |
nbhelp | cd /root/nanobot && bash help.sh | Mostra o guia rapido de comandos |
12. Testar a instalacao
Verifique se tudo esta configurado corretamente:
nanobot status
Este comando mostra: modelo configurado, provider detectado, channels habilitados, e se as chaves sao validas.
Faca um teste rapido de comunicacao com a IA:
nanobot agent -m "Ola, estou testando. Responda com uma frase curta."
Se tudo estiver certo, voce vera a resposta da IA diretamente no terminal.
13. Iniciar o gateway
O gateway e o servidor que fica escutando mensagens dos channels (Telegram, etc.).
Modo foreground (para testar — voce ve os logs ao vivo, Ctrl+C para parar):
nanobot gateway
Modo background (para deixar rodando mesmo depois de fechar o terminal):
nohup python -m nanobot gateway > ~/.nanobot/gateway.log 2>&1 &
O que cada parte do comando background faz?
nohup— "No hang up": nao para quando voce fechar o terminalpython -m nanobot gateway— Inicia o gateway> ~/.nanobot/gateway.log— Redireciona a saida para um arquivo de log2>&1— Erros tambem vao para o mesmo arquivo de log&— Roda em segundo plano (libera o terminal)
Resumo em uma linha (para quem ja sabe o que esta fazendo)
apt update && apt upgrade -y && apt install -y python3 python3-venv python3-pip git && \
cd /root && git clone https://github.com/inematds/nanobot.git && cd nanobot && \
python3 -m venv venv && source venv/bin/activate && pip install -e . && \
nanobot onboard && nano ~/.nanobot/config.json
Parte 2 — Uso Diario
Entendendo o source
Toda vez que voce conectar via SSH, o venv nao esta ativo. Voce precisa ativa-lo antes de usar o nanobot.
Por que precisa do source toda vez?
Analogia: imagine que voce entra em um quarto escuro.
- Sem
source— E como se outra pessoa entrasse no quarto, acendesse a luz, e saisse. A luz se apaga quando ela sai. Voce continua no escuro. - Com
source— Voce mesmo entra e acende a luz. A luz fica acesa enquanto voce estiver la.
O source executa o script no seu terminal atual, modificando o ambiente. Sem ele, o script roda em um sub-processo separado e as mudancas se perdem.
Scripts disponiveis
O nanobot inclui dois scripts auxiliares na raiz do projeto:
| Script | Como executar | O que faz |
|---|---|---|
start.sh |
source start.sh |
Entra na pasta do nanobot e ativa o venv. Precisa do source (ver explicacao acima) |
help.sh |
bash help.sh |
Mostra um guia rapido com todos os comandos. Nao precisa de source porque so imprime texto |
3 formas de ativar o ambiente
Escolha a que preferir — todas fazem a mesma coisa:
| # | Forma | Comando | Quando usar |
|---|---|---|---|
| 1 | Alias | nb |
Forma mais rapida (se configurou o alias no passo 11) |
| 2 | Script | cd /root/nanobot && source start.sh |
Se nao configurou aliases |
| 3 | Manual | cd /root/nanobot && source venv/bin/activate |
Forma classica, funciona sempre |
Tabela de comandos
| Acao | Comando |
|---|---|
| Ver configuracao e status | nanobot status |
| Verificar se esta rodando | ps aux | grep 'nanobot gateway' |
| Iniciar (foreground) | nanobot gateway |
| Iniciar (background) | nohup python -m nanobot gateway > ~/.nanobot/gateway.log 2>&1 & |
| Parar | pkill -f 'nanobot gateway' |
| Reiniciar | pkill -f 'nanobot gateway' && sleep 2 && nohup python -m nanobot gateway > ~/.nanobot/gateway.log 2>&1 & |
| Ver log ao vivo | tail -f ~/.nanobot/gateway.log |
| Status dos channels | nanobot channels status |
| Listar tarefas cron | nanobot cron list |
| Verificar seguranca | nanobot security-check |
| Enviar mensagem direto | nanobot agent -m "Sua mensagem aqui" |
| Ver ajuda rapida | nbhelp ou bash help.sh |
Como atualizar o codigo
Quando houver uma atualizacao no repositorio:
# 1. Parar o gateway (se estiver rodando)
pkill -f 'nanobot gateway'
# 2. Ativar o ambiente (se nao estiver ativo)
nb
# 3. Baixar atualizacoes e reinstalar
git pull && pip install -e .
# 4. Reiniciar o gateway
nohup python -m nanobot gateway > ~/.nanobot/gateway.log 2>&1 &
git pull atualiza apenas o codigo em /root/nanobot/. Seus dados em ~/.nanobot/ (config, sessoes, memoria) nunca sao alterados pelo git pull.
Parte 3 — Estrutura de Diretorios
O nanobot usa duas pastas separadas. Entender a diferenca e fundamental:
/root/nanobot/ ← CODIGO (repositorio git)
+-- nanobot/ ← Codigo-fonte Python
| +-- agent/ ← Logica do agente (loop, tools, context)
| +-- bus/ ← Message bus (fila)
| +-- channels/ ← Telegram, Discord, WhatsApp...
| +-- config/ ← Schema e loader de configuracao
| +-- providers/ ← Conexao com IAs (LiteLLM)
| +-- session/ ← Gerenciador de sessoes
| +-- cron/ ← Agendador de tarefas
| +-- heartbeat/ ← Servico de heartbeat
| +-- security/ ← Rate limit, validacao
| +-- skills/ ← Skills embutidos
+-- venv/ ← Ambiente virtual Python
+-- start.sh ← Script para ativar venv
+-- help.sh ← Guia rapido de comandos
+-- setup.py / pyproject.toml ← Definicao do pacote
+-- config.json ← Exemplo de configuracao (NAO usar este!)
+-- docs/ ← Documentacao (esta pagina)
/root/.nanobot/ ← DADOS DE RUNTIME (seus dados pessoais)
+-- config.json ← SUA configuracao real (chaves, modelo, canais)
+-- gateway.log ← Log do gateway
+-- sessions/ ← Historico de conversas (.jsonl)
| +-- telegram_123456789.jsonl
+-- workspace/ ← Area de trabalho do agente
+-- AGENTS.md ← Personalidade do agente
+-- SOUL.md ← Instrucoes profundas
+-- USER.md ← Informacoes sobre voce
+-- HEARTBEAT.md ← Instrucoes do heartbeat
+-- memory/ ← Memoria persistente
+-- MEMORY.md ← Memoria de longo prazo
+-- 2026-02-10.md ← Notas do dia
| Aspecto | /root/nanobot/ | /root/.nanobot/ |
|---|---|---|
| Conteudo | Codigo-fonte do programa | Seus dados pessoais |
| Controlado por | git (repositorio) |
Voce (e o agente) |
Afetado pelo git pull? |
Sim — atualiza o codigo | Nao — nunca e tocado |
| Backup importante? | Nao (pode re-clonar) | Sim! Contem suas chaves e memorias |
Visivel com ls? |
Sim (pasta normal) | Nao (pasta oculta — precisa de ls -a) |
Existem dois arquivos chamados config.json:
/root/nanobot/config.json— E um exemplo que vem com o repositorio. NAO edite este./root/.nanobot/config.json— E a sua configuracao real. Edite este.
Se voce editar o arquivo errado, o nanobot nao vai encontrar suas chaves. Sempre use: nano ~/.nanobot/config.json
Parte 4 — Resumo Visual
Fluxo: "Acabei de entrar via SSH"
+------------------+
| ssh root@IP |
+--------+---------+
|
v
+------------------+
| Digitar: nb |
| (alias que |
| ativa o venv) |
+--------+---------+
|
v
+------------------+
| Prompt mostra |
| (venv) root@... |
+--------+---------+
|
+-----+------+
| |
v v
+---------+ +------------------+
| Checar | | Iniciar gateway |
| status | +--------+---------+
| nanobot | |
| status | +-----+------+
+---------+ | |
v v
+-----------+ +--------------------+
| Foreground| | Background |
| nanobot | | nohup python -m |
| gateway | | nanobot gateway |
| | | > gateway.log 2>&1 &|
| (Ctrl+C | +--------------------+
| p/ parar)|
+-----------+
Fluxo: "Quero parar / ver logs"
+-------------------------+
| O que voce quer fazer? |
+-----+----------+--------+
| |
v v
+-----------+ +------------------+
| PARAR | | VER LOGS |
+-----------+ +------------------+
| |
v v
+-----------+ +------------------+
| pkill -f | | tail -f |
| 'nanobot | | ~/.nanobot/ |
| gateway' | | gateway.log |
+-----------+ | |
| | (Ctrl+C p/ sair |
v | do tail) |
+-----------+ +------------------+
| Confirmar |
| que parou:|
| ps aux | |
| grep |
| nanobot |
+-----------+
Fluxo: "Quero atualizar o codigo"
+-----------------------+
| 1. Parar gateway |
| pkill -f 'nanobot |
| gateway' |
+----------+------------+
|
v
+-----------------------+
| 2. Ativar venv |
| nb |
+----------+------------+
|
v
+-----------------------+
| 3. Atualizar |
| git pull && |
| pip install -e . |
+----------+------------+
|
v
+-----------------------+
| 4. Reiniciar |
| nohup python -m |
| nanobot gateway |
| > gateway.log 2>&1 & |
+-----------------------+
Resumo dos comandos mais usados
| Situacao | Comando |
|---|---|
| Entrou no servidor | nb |
| Nao lembra dos comandos | nbhelp |
| Quer ver se ta rodando | ps aux | grep nanobot |
| Quer ver o log | tail -f ~/.nanobot/gateway.log |
| Quer parar | pkill -f 'nanobot gateway' |
| Quer iniciar | nohup python -m nanobot gateway > ~/.nanobot/gateway.log 2>&1 & |