Seamless
Memória compartilhada local-first e coordenação de tarefas para agentes de codificação de IA. Um binário Go, servidor MCP, arquivos markdown que você possui. Hooks para Claude Code e Codex CLI (e seus aplicativos de desktop).
Documentação
Seamless
Um agente de codificação de IA redescobre a mesma restrição em toda sessão, porque nada do que aprende sobrevive à janela de contexto. Execute dois agentes contra o mesmo backlog e eles escolhem o mesmo passo e o constroem duas vezes. E os produtos que prometem corrigir isso mantêm a memória do seu projeto no banco de dados de outra pessoa.
Seamless é um substrato de memória e coordenação local-first para agentes de codificação de IA. Funciona com Claude Code, Codex CLI e qualquer cliente MCP.
Ele dá a uma frota de agentes uma memória compartilhada e durável e uma forma de dividir
o trabalho sem colidir: memórias com ciclo de vida de supersessão, recall híbrido, uma
fila de tarefas ciente de dependências com reivindicação baseada em lease, planos
capturados e tentativas de pesquisa. O conhecimento durável é armazenado como arquivos
markdown no disco; o daemon seamlessd o indexa, serve via MCP e renderiza um console
web, enquanto o CLI seam acompanhante dá a agentes headless uma interface direta.
Documentação completa: thereisnospoon.org/docs/
· Site: thereisnospoon.org (fonte em
docs/)
Princípios de design
- Construído para uma frota, não para um agente solitário. Primitivas reais de coordenação: uma fila pronta ciente de dependências, reivindicação atômica de tarefas baseada em lease e planos compostos de notas e passos, para que os agentes dividam o trabalho em vez de colidir.
- Arquivos são a fonte da verdade. Cada memória e nota é um arquivo markdown
com frontmatter YAML sob
~/.seamless-- com diff via git, pesquisável, editável manualmente. O SQLite indexa esses arquivos e também armazena estado operacional, como sessões, tarefas, tentativas e eventos; portanto, faça backup de todo o diretório de dados. - Curadoria propõe, humanos dispõem. Cada passada do jardineiro -- desde deduplicação e arquivamento até sinalização de peso morto e lacunas de conhecimento -- apenas propõe; aplicar é uma ação explícita. A supersessão preserva a proveniência, então nada é reescrito silenciosamente.
- Runtime pequeno e autossuficiente. Um daemon Go estático e CLI, sem CGO, SQLite em Go puro, sem Node, sem mecanismo vetorial separado, sem conta na nuvem.
Como se compara
O espaço de memória de agentes se divide em algumas categorias reconhecíveis. Por categoria, porque categorias não ficam obsoletas:
| Seamless | APIs de memória em nuvem | Memória integrada do agente | Servidores de grafo de conhecimento | |
|---|---|---|---|---|
| Formato de armazenamento | Arquivos Markdown no seu disco; SQLite os indexa e armazena estado operacional | Banco de dados deles, acessado por chave de API | Armazenamento gerenciado pelo fornecedor dentro de um produto | Um banco de dados de grafo, muitas vezes um servidor separado |
| Onde roda | Sua máquina, apenas localhost | A nuvem deles | O produto do fornecedor | Sua máquina ou a deles |
| Conta necessária | Não | Sim | A do fornecedor | Geralmente não |
| Coordenação multi-agente | Fila de tarefas, reivindicação baseada em lease, planos compartilhados | Nenhuma | Nenhuma -- um agente, um armazenamento | Leituras compartilhadas, no máximo |
| Política de esquecimento | Supersessão com proveniência; um jardineiro propõe, um humano dispõe | Sumarização automática que você não controla | Definida pelo fornecedor | Manual |
| Runtime | Daemon Go estático e CLI | SDK HTTP contra o serviço deles | Nenhum (integrado) | Node ou Python, mais o banco de dados |
Para a versão com nomes de produtos e recibos, veja a comparação completa.
Transcrições reais
Quatro pares de sessões reais e não editadas do Claude Code -- prompt idêntico, repositório idêntico, com e sem Seamless:
- Cold start -- uma
sessão continua o plano de ontem a partir de um briefing injetado; a outra
re-deriva o trabalho de um
TODOe re-entrega um bug que o projeto já havia corrigido uma vez. - Violação de restrição --
um scanner de segurança exige
SameSite=Strict, que a equipe já aprendeu quebra logins de links externos. Uma sessão entrega a regressão mesmo assim; uma recusa e cita a restrição registrada. - Segurança de tokens -- instruído a persistir refresh tokens, um agente espelha o mapa em memória em uma coluna SQL de token bruto; o outro lê uma regra registrada primeiro e armazena apenas hashes SHA-256.
- Colisão de tarefas -- dois agentes ao vivo disputam o mesmo passo de plano. Uma reivindicação vence, a outra ricocheteia com o nome do detentor e pivota para o próximo passo pronto.
O que Seamless não é
Não é uma base de conhecimento de equipe hospedada, não é um framework RAG, não é um vencedor de benchmark: é memória e coordenação para a frota de agentes de um único dono, na máquina desse dono.
Início rápido
curl -fsSL https://thereisnospoon.org/install | sh
No Windows, a mesma instalação no PowerShell:
irm https://thereisnospoon.org/install.ps1 | iex
Essa é a instalação inteira. Ela precisa de curl e tar e nada mais -- sem Go,
sem toolchain CGO, sem banco de dados, sem Node. Ela busca o arquivo de release verificado
por checksum para sua plataforma (macOS, Linux e Windows; amd64 e arm64), instala
seamlessd e seam em ~/.local/bin, gera a chave bearer, instala
hooks, MCP e skills para os hosts locais Claude Code/Codex detectados, e executa
o daemon como um serviço por usuário -- launchd no macOS, systemd --user no Linux, uma
Tarefa Agendada no login no Windows. Atualize a qualquer momento com seamlessd update
(re-executa o instalador para você; --check relata instalado vs. mais recente): sua
configuração e ~/.seamless nunca são tocados.
Dias iniciais, releases frequentes. Seamless está no início do seu ciclo de desenvolvimento, e releases com melhorias e correções de bugs chegam com frequência. Atualize pelo menos semanalmente para executar a versão mais recente --
seamlessd updateé o único comando. Veja Atualizar e desinstalar.
(Por que seam? O CLI mantém o nome curto do Seam v1, o predecessor
privado descontinuado do qual Seamless foi reconstruído do zero para substituí-lo.)
Depois, basta iniciar o cliente selecionado em um repositório git. Não há projeto para criar
e nenhum repositório para registrar: o hook de início de sessão resolve seu cwd para a raiz
git, deriva um projeto do nome do diretório do repositório e registra o mapeamento
na hora, para que os agentes herdem o escopo do projeto sem passá-lo em cada chamada.
Recorra a seamlessd map-repo --path ~/code/myrepo --project myrepo apenas para
substituir o slug derivado.
É um script de shell e canalizar o script de um estranho para um
shell merece uma leitura antes. Prefere as peças uma a uma -- Homebrew,
go install, arquivos pré-construídos -- ou quer os botões de substituição? Cada rota está
em Instalar e implantar, e o
Quickstart adapta cada passo ao seu
SO e cliente.
Depois: Quickstart · Configuração do Claude Code · Configuração do chat do app Claude · Configuração local do Codex · Instalar e implantar
Documentação
A documentação completa está em
thereisnospoon.org/docs/ (fontes em
docs-src/, geradas por cmd/docsgen).
| Conceitos | Memória e notas, sessões e briefings, recall, tarefas e planos, projetos e escopo, o jardineiro |
| Guias | Integrando um agente, escrevendo memórias que são recuperadas, coordenando uma frota, solução de problemas |
| Referência | Cada ferramenta MCP, ambos os CLIs, cada chave de configuração, os hooks e os formatos de arquivo |
| Internos | Arquitetura, contribuição, invariantes de domínio |
Este README é deliberadamente curto. Qualquer coisa que possa divergir do código -- contagens
de ferramentas, chaves de configuração, flags de CLI -- vive no site de documentação, onde as
páginas de referência são geradas a partir do próprio código e make check falha se ficarem
obsoletas.
Desenvolvimento
make build # ./bin/seamlessd + ./bin/seam
make test # unit tests
make test-race # unit tests under the race detector
make bench # hot-path benchmarks (recall, briefing, matcher, event fan-out)
make lint # golangci-lint
make check # the full gate: build + vet + fmt-check + docs-check +
# installer-check + site-check + lint + vulncheck + test-race
make doctor # config + database self-checks
make run # serve on 127.0.0.1:8081
make docs # regenerate the docs site (docs-src/ -> docs/docs/, committed)
make docs-serve # regenerate + serve the site at 127.0.0.1:8899/docs/
Os testes são orientados por tabela com testify/require contra SQLite novo ou em memória.
Use make fmt em vez de gofmt -w .: o alvo do Make limita a formatação a
arquivos rastreados pelo git, enquanto uma varredura gofmt pura também reescreve
diretórios de ponto que o padrão ./... do Go exclui.
A saída do site de documentação sob docs/docs/ é commitada, e make check executa
docs-check, então uma mudança em docs-src/ -- ou na superfície de ferramentas ou chaves
de configuração que a referência gera -- deve ser seguida por make docs na mesma
mudança. Veja SITE.md.
As convenções vivem em AGENTS.md; leia antes de escrever código.