omnispace
v0.17.1
Published
Omni CLI (alpha): transforma uma pasta da sua máquina em um espaço Omni e sincroniza entre máquinas.
Maintainers
Readme
omnispace (alpha)
CLI do Omni: transforma uma pasta da sua máquina em um espaço Omni e sincroniza esse espaço entre máquinas.
Alpha. Existem
login,logout,whoami,init,status,sync --push,sync --pull,clone,vincularedesvincular.
Precisa do Node 20 ou mais novo.
Uso
Já tem conta no Omni? Entre pelo navegador (a CLI mostra um link e um código; a senha nunca passa pelo terminal):
npx -y omnispace@latest loginA sessão vale 14 dias sem uso, e cada uso renova. whoami mostra a conta e até quando a sessão vale; logout encerra a sessão e apaga o token desta máquina.
Com a CLI logada, dentro da pasta, o init cria o espaço direto na sua conta (só pergunta o nome, que por padrão é o da pasta) e já oferece o primeiro envio:
npx -y omnispace@latest init .Primeira vez no Omni? Comece pelo site: ele mostra o código de vínculo. Depois, dentro da pasta do espaço:
npx -y omnispace@latest init . --link <código>Só ler a pasta, sem vincular nem enviar nada:
npx -y omnispace@latest init . --scan-onlyVer o que mudou nesta pasta e no servidor, e qual o próximo comando (só lê, não altera nada):
npx -y omnispace@latest statusEm uma linha só (feito para o hook de início do Claude Code; sai sempre com 0):
npx -y omnispace@latest status --resumoPublicar uma nova versão do espaço no servidor:
npx -y omnispace@latest sync . --pushTrazer para a pasta a versão mais nova do servidor:
npx -y omnispace@latest sync . --pullSe o mesmo arquivo mudou aqui e na outra máquina, o Omni junta sozinho quando as mudanças estão em trechos diferentes. Quando o mesmo trecho mudou dos dois lados, ele pergunta, arquivo por arquivo:
- manter local: fica a versão desta máquina, que sobe no próximo envio;
- mesclar: o arquivo é gravado com as duas versões entre marcadores
<<<<<<<e>>>>>>>para você editar; o envio fica bloqueado até os marcadores sumirem; - backup: entra a versão do servidor e a desta máquina fica guardada em
.omni/backups/.
Fora de um terminal interativo, escolha para todos com --conflito=local, --conflito=mesclar ou --conflito=backup.
Baixar um espaço da sua conta em outra máquina (o código aparece no site, em "Baixar em outra máquina"; a pasta é criada):
npx -y omnispace@latest clone <código> "nome-da-pasta"Ligar uma pasta que já tem os arquivos a um espaço da sua conta (criado no site, ou para voltar depois de desvincular). Arquivos iguais ficam, os diferentes perguntam o que fazer:
npx -y omnispace@latest vincularTirar esta máquina da conta e o .omni/ das pastas dela (pede duas confirmações; seus arquivos ficam, e cópias de conflito vão para omni-backups-<data>/):
npx -y omnispace@latest desvincularVer e mudar o que o agente pode fazer sozinho com cada ação dos conectores do espaço. Por padrão, leitura é automática, escrita pede confirmação e ação destrutiva fica bloqueada. Restringir vale na hora; liberar pede confirmação no navegador:
npx -y omnispace@latest permissoes
npx -y omnispace@latest permissoes set slack send_message bloqueadoPerguntar sobre o espaço. A resposta usa a versão publicada, com as fontes (arquivo e versão) e os limites da consulta:
npx -y omnispace@latest ask "Qual foi a última decisão deste projeto?"Com conectores ligados no espaço, o agente também consulta os conectores: leitura automática roda na hora e aparece como [C1], com o horário da consulta. Uma ação que pede confirmação (como criar uma task ou mandar uma mensagem) não roda sozinha: a CLI mostra o pedido inteiro e pergunta Executar? [s/n]. Só s executa, uma vez; o pedido vale 10 minutos. Sem terminal, nada é executado.
No Windows, se o caminho tiver espaço ou apóstrofo, entre na pasta com aspas duplas: cd "C:\caminho\da\pasta".
O que o Omni lê e envia
- A pasta é lida para montar a lista de arquivos. Sobem só arquivos de texto (Markdown, código, JSON e afins), até 25 MB por arquivo e 100 MB por espaço. Nome de arquivo que o Windows não aceita (como
CON,a:b.mdou terminado em ponto) fica de fora, para o espaço abrir em qualquer sistema. - Nunca sobem:
.enve variações, chaves (.pem,.key,id_rsa), pastas.git,node_modulese de build, imagens e mídia, e o.claude/settings.local.jsondo Claude Code (configuração de cada máquina; o.claude/settings.jsonsincroniza) e o.claude/worktrees/(cópias do repositório das sessões paralelas do Claude Code). - Arquivos
.envsão lidos só para listar os nomes das chaves; nenhum valor é guardado ou enviado. A exceção éomnispace env push(abaixo), quando você escolhe chave por chave. - Antes de enviar, a CLI mostra o que sobe e o que fica de fora e pede confirmação.
- Na pasta, o Omni grava só
.omni/space.json(e, só enquanto um sync roda,.omni/lock,.omni/tmp/e.omni/pull-pending.json, apagados no fim;.omni/backups/e.omni/conflicts.jsonquando há conflito). Se um sync for interrompido, rodar o mesmo comando de novo continua de onde parou. Nada disso sincroniza. O token de acesso fica em~/.omni/credentials.json, fora de qualquer projeto, legível só pelo seu usuário. - A CLI só fala com o servidor por HTTPS (
httpsó vale para um servidor na própria máquina, em desenvolvimento).
Credenciais do .env no cofre do espaço
npx -y omnispace@latest env pushCom a CLI logada, dentro da pasta do espaço: a CLI lê os arquivos .env da raiz (menos .env.example, .env.sample e .env.template) e pergunta chave por chave se ela vai para o cofre do espaço. Mostra o nome, o arquivo e no máximo os 4 últimos caracteres do valor. Antes de enviar, pede que você confirme no navegador, logado na sua conta, digitando o código do terminal. O valor vai cifrado para o cofre (Vault) e não aparece em tela, log nem resposta. Sem terminal, nada é enviado.
- Chaves que formam um conector já ligam o conector do espaço, depois de um teste de conexão: Supabase com
<PREFIXO>_URLe<PREFIXO>_SERVICE_ROLE_KEY(ou_SERVICE_KEY), comoSUPABASE_URLouSUPABASE_TOOLS_URL; ClickUp com o token (CLICKUP_API_KEYouCLICKUP_<NOME>_TOKEN) e oCLICKUP_TEAM_ID. Se houver mais de um projeto para o mesmo conector, a CLI pergunta qual liga. env listmostra as chaves guardadas (só nomes).env rm <CHAVE> [--arquivo .env.local]apaga do cofre de vez, também com confirmação no navegador. Se um conector usava a chave, ele fica desligado.
