nanobot — Guia de Instalacao

Como instalar e operar o nanobot em um servidor Ubuntu limpo, do zero

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 -y responde "sim" automaticamente

3. Instalar ferramentas necessarias

apt install -y python3 python3-venv python3-pip git
PacoteO que ePor que precisa
python3A linguagem Python (versao 3)O nanobot e escrito em Python
python3-venvModulo para criar ambientes virtuaisIsolar as dependencias do nanobot
python3-pipGerenciador de pacotes do PythonInstalar bibliotecas (litellm, telegram, etc.)
gitControle de versaoBaixar (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:

Antes (fora do venv):
root@servidor:~/nanobot#
Depois (dentro do venv):
(venv) root@servidor:~/nanobot#

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 fizer git pull para 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?

ChaveOnde obterComo
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.

AliasEquivale aPara que serve
nbcd /root/nanobot && source venv/bin/activateAtiva o ambiente do nanobot rapidamente
nbhelpcd /root/nanobot && bash help.shMostra 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 terminal
  • python -m nanobot gateway — Inicia o gateway
  • > ~/.nanobot/gateway.log — Redireciona a saida para um arquivo de log
  • 2>&1 — Erros tambem vao para o mesmo arquivo de log
  • & — Roda em segundo plano (libera o terminal)
Pronto! Se o gateway iniciou sem erros, mande uma mensagem para o seu bot no Telegram. Ele deve responder.

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:

ScriptComo executarO 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:

#FormaComandoQuando 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

AcaoComando
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 &
Atencao: O 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)
Cuidado com os DOIS config.json!

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

SituacaoComando
Entrou no servidornb
Nao lembra dos comandosnbhelp
Quer ver se ta rodandops aux | grep nanobot
Quer ver o logtail -f ~/.nanobot/gateway.log
Quer pararpkill -f 'nanobot gateway'
Quer iniciarnohup python -m nanobot gateway > ~/.nanobot/gateway.log 2>&1 &