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

Go Reference Latest release License: MIT MCP

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:

SeamlessAPIs de memória em nuvemMemória integrada do agenteServidores de grafo de conhecimento
Formato de armazenamentoArquivos Markdown no seu disco; SQLite os indexa e armazena estado operacionalBanco de dados deles, acessado por chave de APIArmazenamento gerenciado pelo fornecedor dentro de um produtoUm banco de dados de grafo, muitas vezes um servidor separado
Onde rodaSua máquina, apenas localhostA nuvem delesO produto do fornecedorSua máquina ou a deles
Conta necessáriaNãoSimA do fornecedorGeralmente não
Coordenação multi-agenteFila de tarefas, reivindicação baseada em lease, planos compartilhadosNenhumaNenhuma -- um agente, um armazenamentoLeituras compartilhadas, no máximo
Política de esquecimentoSupersessão com proveniência; um jardineiro propõe, um humano dispõeSumarização automática que você não controlaDefinida pelo fornecedorManual
RuntimeDaemon Go estático e CLISDK HTTP contra o serviço delesNenhum (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 TODO e 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).

ConceitosMemória e notas, sessões e briefings, recall, tarefas e planos, projetos e escopo, o jardineiro
GuiasIntegrando um agente, escrevendo memórias que são recuperadas, coordenando uma frota, solução de problemas
ReferênciaCada ferramenta MCP, ambos os CLIs, cada chave de configuração, os hooks e os formatos de arquivo
InternosArquitetura, 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.