arquitetura

Um ponto decide tudo.

O Aluy CLI é um processo no seu terminal. Ele lê e edita arquivos, roda comandos e guarda a sessão, a memória e a sua chave na sua máquina. Entre o modelo propor uma ação e a ação acontecer existe exatamente uma função — e não há caminho que desvie dela.

o turno

O que acontece entre o enter e a resposta.

O ciclo de um turno no Aluy CLI Você digita um objetivo. O contexto é montado com a memória, as instruções do projeto e a lista de ferramentas. A chamada sai para o modelo, que é a única etapa fora da sua máquina. A resposta vira uma proposta de ferramenta, que passa pela catraca de permissão. A catraca nega, pergunta ou permite. A ferramenta roda e o resultado volta para o modelo, fechando o ciclo. o resultado volta para o contexto você digita o objetivo ou o !comando, que segue o mesmo caminho o contexto é montado remontado a cada turno, nunca acumulado memória do projeto e global ALUY.md e as raízes autorizadas a lista de ferramentas do momento a chamada ao modelo o seu provider, com a sua credencial única etapa fora da sua máquina a resposta vira proposta por tool-call nativa ou por bloco no texto os dois caminhos desembocam no mesmo lugar A CATRACA um único ponto — cinco caminhos entram, nenhum desvia nega pergunta permite o modelo fica sabendo, nada muda espera você. sem humano, bloqueia a ferramenta roda o arquivo muda, o comando roda

O !comando que você digita no prompt não é atalho: ele monta a mesma proposta de ferramenta e passa pela mesma decisão. O mesmo vale para os sub-agentes, para os hooks e para o /init.

a catraca

O que ela deixa passar, e o que ela trava.

A regra base é negar. O que passa está escrito em código, não no prompt — então não há texto que convença o modelo do contrário.

allow

passa direto

Só o que lê e não muda nada: abrir um arquivo, procurar um texto, procurar um arquivo pelo nome e listar uma pasta. Mais gravar uma memória e falar numa sala.

ask

sempre pergunta

Rodar comando, editar e escrever arquivo. E qualquer ferramenta que ela não conheça — incluindo toda ferramenta que vier de um servidor MCP.

deny

nega, não pergunta

Ler ~/.ssh, ~/.aws, ~/.gnupg, chaves privadas e certificados. E a própria pasta ~/.aluy/ — nem para ler, nem para escrever.

o que não afrouxa
Cinco categorias, nem na configuração. Apagar coisas, acessar a rede, virar administrador, instalar pacote e mexer nos arquivos que rodam quando o computador liga.
Ferramenta de MCP sempre pergunta. Toda ferramenta que vier de um servidor MCP entra numa categoria à parte.
O painel só mexe em duas. O /permissions só consegue mexer em duas ferramentas de leitura — o resto aparece travado.
E a exceção, dita por inteiro.

Com o --yolo tudo é aprovado antes mesmo de chegar nessas checagens. Sob ele o agente alcança a própria pasta ~/.aluy/ — a configuração de MCP, os hooks, o diário de desfazer e o cofre da credencial. É uma decisão deliberada do modo, não um furo. Fora do --yolo, essas regras valem sempre.

os módulos

Duas metades, com uma fronteira que a esteira de testes cobra.

O mapa dos componentes do Aluy CLI Três zonas. Dentro do processo aluy ficam a TUI, a sessão e o miolo — o ciclo do turno, o contexto, as ferramentas nativas, a memória, o diário cifrado, o cliente MCP e a catraca — mais as portas. Na sua máquina, em outro processo, ficam os sidecars mem0, headroom e ollama, os servidores MCP e os serviços em segundo plano. Fora da sua máquina ficam o seu provider de modelo, a busca na web e o Telegram. Só as portas cruzam para fora. DENTRO DO PROCESSO aluy um binário só; nada disso é serviço a TUI terminal, painéis, temas, o menu de barra a sessão o estado do que está acontecendo O MIOLO — não sabe o que é uma tela o ciclo do turno a montagem do contexto as ferramentas nativas a memória o diário cifrado (desfazer) o cliente MCP A CATRACA decide tudo que muda alguma coisa as portas shell · arquivos · busca · rede · cofre — tudo que sai passa por aqui NA SUA MÁQUINA, OUTRO PROCESSO só se você instalar; loopback, sem credencial mem0 memória longa, num sidecar headroom conversas longas sem perder o fio ollama modelos rodando na sua máquina servidores MCP · serviços processos filhos, entrada e saída padrão FORA DA SUA MÁQUINA o que atravessa a rede o seu provider de modelo dez no catálogo, mais o que você declarar a busca na web o buscador, e o web_fetch que você aprovar o Telegram · o npm se você conectar; e a checagem de versão
o que o desenho não mostra
O provider, fixado no IP. A conexão com o seu provider é fixada no IP que resolveu e recusa redirecionamento.
O Telegram, fora do alcance do modelo. O destino de uma mensagem não é argumento do modelo, então uma instrução injetada não consegue mandar nada para outro lugar.
A atualização, sozinha. A checagem de versão instala a atualização sozinha até você desligar com ALUY_AUTO_UPDATE=0.
o estado

Onde cada coisa mora.

Tudo em ~/.aluy/, com permissão só para o seu usuário — nenhuma outra conta da máquina entra lá. Não existe banco de dados em lugar nenhum: o índice da memória é um arquivo Markdown que você pode abrir e editar.

sessions/

sessão e transcrição

Um JSON por sessão, com os blocos da conversa e o que você rodou.

undo/

diário de desfazer

O estado anterior de cada arquivo, cifrado. A chave é da sessão e morre com o processo — o desfazer não atravessa um reinício.

memory/

memória

Markdown: um global e um por projeto. Um fato por linha, editável à mão.

keyring

credencial

No cofre do sistema, ou num arquivo cifrado onde não houver — com a chave derivada da máquina, nunca escrita.

config.json

configuração

Tema, modelo, por onde a chamada sai, perfil e serviços. Mais os hooks e os servidores MCP, cada um no seu arquivo.

agents/ skills/

o que você escreve

Agentes, comandos, skills, workflows e plugins: arquivos .md que você versiona se quiser.

Ler a documentação →