engram
AGENTS.md3 starsChanged 10 months agoMITView on GitHub
Repositório: https://github.com/aiconnai/engram Linguagem Principal: Rust (com SDKs em Python e TypeScript para integração) Banco de Dados: SQLite + WAL (local-first), com sincronização opcional S3/R2
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,542 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository9 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- agentshield-scanSkill
- dependency-triageSkill
- engram-councilSkill
- engram-onboardingSkill
- loop-engineeringSkill
- loop-triage-ciSkill
- loop-triageSkill
- pr-review-triageSkill
The file
We split this AGENTS.md into the rules it gives an agent
6 rules. About 0 are common, 1 is distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 49
Tratamento de Erros: Use Result<T, EngramError> com ?
- Very specific: line 55
Testes: Use #[cfg(test)] mod tests com #[test] functions
- Very specific: line 60
Async: Use async with EngramClient(...) as client para gerenciar ciclo de vida
- Very specific: line 62
Type Hints: Use dict[str, Any] (Python 3.9+) em vez de Dict/List de typing
- Distinctive: line 67
Nomenclatura: Use camelCase no TS, convertido para snake_case na API
- Very specific: line 68
Documentação: Use TSDoc (/ */) para todos os métodos públicos
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Engram - AI Agent Context
Visão Geral
Engram é um sistema de memória persistente para agentes de IA e times que trabalham sobre contexto proprietário, construído em Rust. Ele organiza entrevistas, reuniões, documentos, transcrições e decisões, e expõe isso por busca híbrida (BM25 + vetores + fuzzy), grafos de conhecimento e protocolo MCP (Model Context Protocol) para consulta direta na fonte.
Repositório: https://github.com/aiconnai/engram
Linguagem Principal: Rust (com SDKs em Python e TypeScript para integração)
Banco de Dados: SQLite + WAL (local-first), com sincronização opcional S3/R2
Estrutura do Projeto
engram/
├── src/ # Código principal Rust (crate: engram-core)
│ ├── lib.rs # Ponto de entrada da biblioteca
│ ├── bin/ # Binários (engram-server, engram-cli, ...)
│ ├── hooks/ # Lifecycle hooks (session_end, etc.)
│ ├── storage/ # Camada de banco de dados e migrações
│ ├── search/ # Busca híbrida e embeddings
│ ├── mcp/ # Implementação do protocolo MCP
│ └── ...
├── sdks/
│ ├── python/ # SDK Python assíncrono (EngramClient)
│ └── typescript/ # SDK TypeScript (EngramClient)
├── tests/ # Testes de integração Rust
├── docs/ # Documentação adicional
├── Cargo.toml
└── README.md # Documentação principalComo Rodar Localmente
# Clone o repositório
git clone https://github.com/aiconnai/engram.git
cd engram
# Compile
cargo build --release
# Rode como servidor MCP (para Claude Code, Cursor, etc.)
./target/release/engram-server --transport stdio
# Ou como API HTTP
./target/release/engram-server --transport http --http-port 8080Padrões de Código Importantes
Rust
- Tratamento de Erros: Use
Result<T, EngramError>com?para propagação - Thread Safety: Handlers devem implementar
Send + Sync - SQLite & Concurrency: Nunca segure
rusqlite::Connectionatravés de.await(!Send/!Sync). Usewith_connection(|conn| ...). Jamais faça chamadas de rede ou APIs de embedding dentro de transações de banco (evitaSQLITE_BUSY). - Unicode Safety: Nunca fatie strings originais usando offsets de bytes calculados em cópias lowercased/normalizadas. Use iteradores de caracteres, graphemes ou limites de regex (
\b). - Anti-IDOR: Consultas por ID primário inteiro (
id: 123) devem obrigatoriamente validar o workspace contra o principal autenticado (principal.allows_workspace). - Build Velocity: Nunca rode
cargo cleansem confirmação prévia explícita. O cache incremental preserva a velocidade da suíte de testes. - Testes: Use
#[cfg(test)] mod testscom#[test]functions - Clippy: Sempre execute
cargo clippyantes de submeter PRs - Migrations: Ao alterar o schema, atualize
SCHEMA_VERSIONemsrc/storage/migrations/mod.rse os testes correspondentes (src/storage/migrations/tests.rs)
Python SDK (sdks/python/)
- Async: Use
async with EngramClient(...) as clientpara gerenciar ciclo de vida - Parâmetros: Evite sombrear built-ins (ex: use
filter_em vez defilter) - Type Hints: Use
dict[str, Any](Python 3.9+) em vez deDict/Listdetyping - Docstrings: Siga PEP 257, inclua exemplos assíncronos corretos
TypeScript SDK (sdks/typescript/)
- Tipagem: Evite
unknownexcessivo, crie interfaces específicas para retornos - Nomenclatura: Use camelCase no TS, convertido para snake_case na API
- Documentação: Use TSDoc (
/** */) para todos os métodos públicos
Armadilhas Conhecidas (Gotchas)
- Schema Version Mismatch: Testes em
src/storage/migrations/tests.rstêm versão hardcoded. Ao atualizar schema, atualize também os testes. - Python Built-ins: O parâmetro
filteremEngramClient.list()foi renomeado parafilter_para evitar sombra do built-in. - TypeScript Syntax: Verifique cuidadosamente o fechamento de tipos em métodos que retornam objetos complexos (ex:
Promise<{...}>). - Unicode Slicing: Textos multilíngues sofrem variação de tamanho em bytes ao converter maiúsculas/minúsculas (ex:
ßvsẞ). Fatiar strings originais com índices de string normalizada causa panic no Rust. - SQLite WAL Starvation: Abrir uma transação de escrita antes de aguardar APIs externas bloqueia todos os leitores e escritores do banco local.
- WAL Sparse-File Attack: Replay de frames de replicação deve validar
page_number <= MAX_ALLOWED_DB_PAGESpara impedir criação acidental de arquivos esparsos de múltiplos terabytes.
Ferramentas MCP Disponíveis
O Engram expõe as ferramentas MCP documentadas em docs/MCP_TOOLS.md. Elas existem para transformar contexto disperso em memória acionável, com leitura e escrita pela mesma superfície. Principais:
memory_create,memory_search,memory_listmemory_create_daily(memórias efêmeras)identity_create,identity_resolvetemporal_contradictions,scope_set
Huly
Se o skill huly estiver disponível no seu ambiente (.claude/skills/huly/SKILL.md, não versionado), leia-o primeiro. Caso contrário, as regras abaixo são auto-suficientes.
- Prefira a Huly Platform API para automação com token, especialmente quando o login humano usa GitHub/Google/OIDC.
- Variáveis mínimas:
HULY_URL,HULY_WORKSPACE,HULY_PROJECT,HULY_API_TOKEN. - Fallbacks aceitos:
HULY_TOKENeHULY_APY_TOKEN. - Nunca imprima tokens, headers, cookies ou dumps de ambiente com credenciais.
- Antes de qualquer escrita, faça um lookup read-only para confirmar workspace, token e projeto.
Onde Encontrar O Que
- Hooks de ciclo de vida:
src/hooks/ - Implementação MCP:
src/mcp/ - Cliente Python:
sdks/python/engram_client/client.py - Cliente TypeScript:
sdks/typescript/src/index.ts - Testes de integração:
tests/*.rs - Documentação da API:
docs/REFERENCE.md(Engram Cloud),INVARIANTS.md(regras do projeto) - Engenharia e Governança:
docs/standards/rust-repository-engineering-standard-v5.md,governance/exceptions.toml,governance/models.toml - Tese do produto:
README.md,docs/README.md,docs/AI_GUIDE.md,docs/USING_ENGRAM_IN_A_REPO.md - AI Operating Guide / lazycodex-ai:
docs/AI_OPERATING_GUIDE.md - Decision triage (CLI compartilhada):
docs/integrations/decision-triage.md, configdecision-triage.json
Harness de Desenvolvimento (Obrigatório no Início de Toda Sessão)
Antes de qualquer planejamento ou edição, rode:
bash docs/harness/bin/bootstrap.shEm seguida leia (em ordem):
docs/harness/SPEC.mddocs/harness/INVARIANTS.mddocs/harness/WHAT_WE_DONT_DO.mddocs/harness/GATES.mddocs/harness/CODE_REVIEW_POLICY.mddocs/harness/security/anthropic-reference-harness.mddocs/harness/README.mddocs/harness/progress.md- active plan apontado em
docs/harness/progress.md AGENTS.mdeCLAUDE.mdINVARIANTS.md(raiz)STANDARDS.mdeERRORS_AND_LESSONS.md
O harness garante que o trabalho seja retomável entre agentes (Claude Code CLI, Claude Code Sonnet reviewer, etc.) e entre sessões. Ele implementa as camadas de Context Engine, Planner, Memory Manager e Verifier diretamente no repositório.
AI Operating Guide (lazycodex-ai)
Para decidir quando delegar trabalho de repositório ao lazycodex-ai, leia
docs/AI_OPERATING_GUIDE.md depois da leitura
obrigatória do harness. Use esse guia para escolher entre resposta direta,
lazycodex-ai doctor e lazycodex-ai run, sempre preservando os gates locais,
o boundary de segurança do harness e a validação com evidência.
Comandos Úteis para Agentes
# Harness bootstrap + gates (obrigatório)
bash docs/harness/bin/bootstrap.sh
bash docs/harness/bin/doctor.sh
bash docs/harness/bin/sensors.sh # etapas de scripts/ci.sh (make ci) + doctor (pode demorar)
bash docs/harness/bin/review-gate.sh pre harness-bootstrap
# Verificar código Rust
cargo clippy && cargo fmt --check
# Rodar os gates obrigatórios de CI localmente (equivalente ao que deve estar
# verde no PR): formato, lint, testes core (Linux) e documentação.
make ci
# ou, se o `just` estiver instalado: just ci (alias do mesmo scripts/ci.sh)
# Para ignorar falhas de validações opcionais localmente (ex.: dependências ausentes):
# CI_ALLOW_OPTIONAL_TEST_FAILURES=1 make ci
# Opcional: instale o hook local de pre-commit
git config core.hooksPath .githooks
# Rodar testes Rust
cargo test
# lazycodex-ai operational delegation
rtk npx lazycodex-ai doctor
rtk npx lazycodex-ai run "Task summary with acceptance criteria"
# Verificar tipos TypeScript (se node disponível)
cd sdks/typescript && npm run type-check
# Testar cliente Python (se ambiente configurado)
cd sdks/python && pytest tests/Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

