GRKMemory (Graph Retrieve Knowledge Memory) - A semantic graph-based memory system for AI agents developed by MonkAI team
Project description
🧠 GRKMemory - Graph Retrieve Knowledge Memory
GRKMemory = Graph Retrieve Knowledge Memory
GRKMemory é um sistema de memória semântica baseado em grafos para agentes de IA, desenvolvido pelo time MonkAI. Recuperação inteligente de conhecimento com grande economia de tokens (~95% em nossos benchmarks internos — veja Performance).
🚀 Começando
1️⃣ Instalação
pip install grkmemory # sempre em um venv (ou via pipx)
Requer Python 3.10–3.13 (distribuímos apenas wheels compilados, sem sdist).
Instalando no Python do sistema (Debian/Ubuntu, devcontainers de IDE)? Prefira um venv ou
pipx install --python python3.12 grkmemory— o site-packages do sistema não entra no caminho e nada conflita. Se precisar instalar direto no sistema e o pip falhar com "Cannot uninstall PyJWT... no RECORD" (o extra[mcp]puxapyjwt>=2.10.1via SDK MCP, e o PyJWT doaptnão pode ser removido pelo pip), use:pip install --ignore-installed PyJWT "grkmemory[mcp]".
2️⃣ Token de acesso (opcional — só para o gate de autenticação)
O uso direto da biblioteca (GRKMemory, MemoryRepository, servidor MCP, plugin Claude Code) não exige token. O token MonkAI só é necessário se você quiser a camada opcional de controle de acesso (GRKAuth/AuthenticatedGRK) — útil quando vários times/serviços compartilham o mesmo store:
📧 Contato: contato@monkai.com.br
🌐 Site: www.monkai.com.br
3️⃣ Configurar Token
# Configurar como variável de ambiente
export GRKMEMORY_API_KEY="grk_seu_token_aqui"
# OpenAI (padrão)
export OPENAI_API_KEY="sua_openai_key"
# OU Azure OpenAI
export USE_AZURE_OPENAI="true"
export AZURE_OPENAI_API_KEY="sua_azure_key"
export AZURE_OPENAI_ENDPOINT="https://seu-recurso.openai.azure.com"
export AZURE_OPENAI_DEPLOYMENT="gpt-4o"
export AZURE_OPENAI_EMBEDDING_DEPLOYMENT="text-embedding-3-small"
4️⃣ Autenticar e Usar
from grkmemory import GRKMemory, GRKAuth, AuthenticatedGRK
# Autenticar com token MonkAI
auth = GRKAuth.from_env() # Usa GRKMEMORY_API_KEY
print("✅ Autenticado!")
# Inicializar GRKMemory protegido
grk = GRKMemory()
secure = AuthenticatedGRK(grk, auth.get_current_token())
# Usar!
secure.save_conversation([
{"role": "user", "content": "Olá!"},
{"role": "assistant", "content": "Oi! Como posso ajudar?"}
])
results = secure.search("Olá")
🎯 Quick Start (Completo)
from grkmemory import GRKMemory, GRKAuth, AuthenticatedGRK
import os
# 1. Autenticar
api_key = os.getenv("GRKMEMORY_API_KEY")
auth = GRKAuth()
auth.authenticate(api_key)
# 2. Criar GRKMemory autenticado
grk = GRKMemory()
secure = AuthenticatedGRK(grk, api_key)
# 3. Salvar conversa
secure.save_conversation([
{"role": "user", "content": "Vamos falar sobre Python"},
{"role": "assistant", "content": "Claro! O que você quer saber?"}
])
# 4. Buscar memórias relevantes
results = secure.search("O que discutimos sobre Python?")
# 5. Chat com contexto de memória automático
response = secure.chat("Me conte sobre nossas discussões anteriores")
🔐 Autenticação
Token MonkAI
A autenticação é uma camada de proteção opcional: ela só entra em cena quando você envolve a lib com GRKAuth/AuthenticatedGRK para dar a cada consumidor um token com permissões próprias (vários times/serviços num mesmo store). O uso direto — GRKMemory, MemoryRepository, servidor MCP, plugin Claude Code — funciona sem nenhum token (ver "Modo Offline (Sem Token)" abaixo). O que o GRKMemory/MemoryConfig exigem é uma chave OpenAI/Azure (para o chat agent e embeddings de API) — e mesmo essa é dispensável com MemoryRepository(enable_embeddings=False) ou com o provider local (grkmemory[local-embeddings]).
| Permissão | Descrição |
|---|---|
read |
Buscar e consultar memórias |
write |
Salvar novas memórias |
admin |
Gerenciamento completo |
Métodos de Autenticação
from grkmemory import GRKAuth
# Método 1: Via variável de ambiente (recomendado)
auth = GRKAuth.from_env() # Usa GRKMEMORY_API_KEY
# Método 2: Diretamente
auth = GRKAuth()
auth.authenticate("grk_seu_token")
# Verificar permissões
print(f"Pode ler: {auth.check_permission('read')}")
print(f"Pode escrever: {auth.check_permission('write')}")
⚠️ Importante: Tokens são fornecidos exclusivamente pelo time MonkAI.
⚙️ Configuração
from grkmemory import GRKMemory, MemoryConfig
config = MemoryConfig(
model="gpt-4o",
memory_file="minhas_memorias.json",
enable_embeddings=True,
background_memory_method="graph", # 'graph', 'embedding', 'tags', 'entities', 'hybrid'
background_memory_limit=5,
background_memory_threshold=0.3,
storage_format="json", # 'json' (padrão) ou 'toon'
output_format="json" # 'json', 'toon', 'text' ou 'raw'
)
grk = GRKMemory(config=config)
🗄️ Backends de Armazenamento (file / postgres)
O armazenamento e a busca vetorial vivem atrás de uma interface StorageBackend
plugável. O default (file) mantém o comportamento histórico — um único arquivo
plano (JSON/TOON, opcionalmente criptografado) com índice FAISS em memória. Ele é
seguro apenas em processo único: dois processos compartilhando o mesmo
MEMORY_FILE competem (último a escrever vence). Para um servidor com memória que
precisa escalar horizontalmente, externalize o storage para remover esse
acoplamento a instância-única + volume persistente.
| Backend | Concorrência | Quando usar |
|---|---|---|
file (default) |
processo único | dev local, single-instance, sem nova dependência |
postgres |
entre processos (transacional) | produção horizontal/stateless |
Seleção via ambiente (ou MemoryConfig):
# Default — nada muda
GRKMEMORY_STORAGE_BACKEND=file
# pgvector (requer o extra grkmemory[postgres])
GRKMEMORY_STORAGE_BACKEND=postgres
GRKMEMORY_POSTGRES_DSN=postgresql://user:pass@host:5432/db
GRKMEMORY_EMBEDDING_DIM=1536 # dimensão do embedding (default 1536)
pip install "grkmemory[postgres]" # instala psycopg + pgvector
A biblioteca base nunca importa psycopg — o PostgresVectorBackend é
resolvido sob demanda, então quem usa o backend file não ganha dependência
nova. O backend externo cria a tabela + índice ANN HNSW (cosseno) na primeira
inicialização. O grafo semântico continua sendo reconstruído em memória a partir
dos registros (v1 não persiste arestas no banco).
Também é possível injetar um backend diretamente:
from grkmemory.memory.repository import MemoryRepository
from grkmemory.memory.backends import PostgresVectorBackend
backend = PostgresVectorBackend(dsn="postgresql://...", embedding_dim=1536)
repo = MemoryRepository(backend=backend)
☁️ Azure OpenAI
GRKMemory suporta Azure OpenAI nativamente. Configure via variáveis de ambiente ou código:
Via Variáveis de Ambiente
export USE_AZURE_OPENAI="true"
export AZURE_OPENAI_API_KEY="sua-api-key"
export AZURE_OPENAI_ENDPOINT="https://seu-recurso.openai.azure.com"
export AZURE_OPENAI_DEPLOYMENT="gpt-4o"
export AZURE_OPENAI_EMBEDDING_DEPLOYMENT="text-embedding-3-small"
export AZURE_OPENAI_API_VERSION="2024-02-01" # opcional
Via Código
from grkmemory import GRKMemory, MemoryConfig
# Configuração Azure OpenAI
config = MemoryConfig(
use_azure=True,
api_key="sua-azure-api-key",
azure_endpoint="https://seu-recurso.openai.azure.com",
azure_deployment="gpt-4o",
azure_embedding_deployment="text-embedding-3-small",
azure_api_version="2024-02-01"
)
grk = GRKMemory(config=config)
Tabela de Configurações Azure
| Variável | Config | Descrição |
|---|---|---|
USE_AZURE_OPENAI |
use_azure |
Ativar Azure (true/false) |
AZURE_OPENAI_API_KEY |
api_key |
Chave da API Azure |
AZURE_OPENAI_ENDPOINT |
azure_endpoint |
URL do recurso Azure |
AZURE_OPENAI_DEPLOYMENT |
azure_deployment |
Nome do deployment (chat) |
AZURE_OPENAI_EMBEDDING_DEPLOYMENT |
azure_embedding_deployment |
Nome do deployment (embeddings) |
AZURE_OPENAI_API_VERSION |
azure_api_version |
Versão da API (default: 2024-02-01) |
📦 Formatos de Armazenamento (JSON vs TOON)
GRKMemory suporta dois formatos de serialização:
| Formato | Vantagem | Uso Recomendado |
|---|---|---|
| JSON | Parsing 27x mais rápido | Armazenamento (padrão) |
| TOON | 25% menos tokens | Contexto para LLM |
Instalando TOON (opcional)
pip install toon_format
Estratégia Híbrida (Recomendada)
from grkmemory import MemoryRepository
# JSON para armazenamento (rápido) + TOON para LLM (economia de tokens)
repo = MemoryRepository(
memory_file="memorias.json",
storage_format="json", # Parsing rápido
output_format="toon" # 25% menos tokens para LLM
)
# Buscar e formatar para LLM
results = repo.search("Python")
context = repo.format_for_llm(results) # Retorna em TOON (~25% menos tokens)
Comparando Formatos
# Estimar economia de tokens
estimates = repo.get_token_estimate(results)
print(estimates)
# {'json': 689, 'toon': 512, 'savings_toon_vs_json': '25.7%'}
✂️ output_format="raw" — Modo enxuto de tokens
Quando o consumidor downstream só precisa do conteúdo da resposta (a mensagem
do assistant) e não dos metadados de cada memória (summary, tags, entities,
sentiment, etc.), use output_format="raw". Devolve apenas o content do
primeiro turno de assistant de cada conversa recuperada, separado por
\n\n---\n\n.
repo = MemoryRepository(
memory_file="memorias.json",
output_format="raw",
)
results = repo.search("capital da França")
context = repo.format_for_llm(results)
# "A capital da França é Paris."
# (sem JSON wrapper, sem metadados, sem labels)
Benchmark (issue #13)
47k chars de snapshot, 30 queries, gpt-4.1-mini + judge gpt-4.1 (rubrica 0–3):
| Formato | input tokens | judge | recall vs json |
|---|---|---|---|
json (default) |
1.705 | 1.47 | igual |
toon |
1.475 | 1.47 | igual |
text |
252 | 1.00 | cai (perde conversation) |
raw |
640 | 1.47 | igual |
→ ~2.7× mais barato que json com recall idêntico em consultas factuais.
Use quando o LLM downstream só precisa do que o assistente respondeu antes; use
json/toon quando o LLM precisa raciocinar sobre tags/sentiment/confidence.
🔍 preserve_identifiers — Recall em corpus pequeno/identifier-dense
O KnowledgeAgent resume cada conversa antes de embeddar, o que é ótimo para
chat narrativo, mas descarta tokens identificadores (semver v1.6.0,
issue refs #42, env vars OPENAI_API_KEY, key=value floor_value=30) —
justamente o que consultas factuais matcham. Em corpus pequeno/identifier-dense
(<~95k tokens), cosine ingênuo sobre chunks crus chega a vencer o GRKMemory
em 0.3–1.1 pontos de judge nessas consultas. Acima de ~95k tokens o GRKMemory
volta a ganhar (a discriminação semântica supera o "imposto" da perda de surface).
A solução é um dual-index opt-in:
from grkmemory import MemoryConfig, GRKMemory
cfg = MemoryConfig(
preserve_identifiers=True, # default False — opt-in, sem custo se off
# identifier_regex=... # opcional; default cobre semver/#issue/SCREAMING_SNAKE/key_=val
background_memory_method="hybrid", # max-pool sobre os 2 embeddings
)
grk = GRKMemory(config=cfg)
grk.save_conversation([
{"role": "user", "content": "qual a última versão?"},
{"role": "assistant", "content": "Liberamos v1.6.0 no PyPI ontem."},
])
# Consulta factual com surface token — o embedding do summary largou "v1.6.0",
# mas o embedding_identifier preservou. O hybrid recupera.
results = grk.search("v1.6.0")
O que muda no schema
Quando ligado, cada memória ganha 2 campos:
identifiers: List[str]— tokens extraídos doconversation[assistant].contentembedding_identifier: List[float]— vetor sobre{summary} {identifiers}
search(method="hybrid") calcula max(cos(query, embedding), cos(query, embedding_identifier))
por memória. Custo extra: 1 chamada de embedding adicional por save() (zero se
o regex não casa nada nessa memória). Default off — backwards compatible.
Padrões cobertos pelo regex default
| Padrão | Exemplo |
|---|---|
| semver | v1.6.0, 0.47.0-rc1 |
| issue ref | #42, #300 |
| SCREAMING_SNAKE | OPENAI_API_KEY, RUN_LLM_E2E |
lower_snake=value |
floor_value=30, top_k=5 |
Customizável via identifier_regex ou env IDENTIFIER_REGEX.
Convertendo entre Formatos
# Exportar para TOON
repo.export("backup.toon", format="toon")
# Converter armazenamento para TOON
repo.convert_storage_format("toon")
👥 Multi-tenant (user_id / session_id / tenant_id)
É possível isolar memórias por usuário, sessão e/ou tenant usando os parâmetros opcionais user_id, session_id e tenant_id em save_conversation, search, chat, get_stats e get_top_memories. O armazenamento continua em um único arquivo/store; o filtro é aplicado na busca.
# Salvar conversa para um usuário/sessão
grk.save_conversation(
[{"role": "user", "content": "Olá!"}, {"role": "assistant", "content": "Oi!"}],
user_id="user_123",
session_id="sess_abc"
)
# Buscar apenas memórias desse usuário
results = grk.search("Olá", user_id="user_123")
# Ou apenas dessa sessão
results = grk.search("Olá", session_id="sess_abc")
# Chat e save também aceitam user_id/session_id
response = grk.chat("O que discutimos?", user_id="user_123")
Sem user_id/session_id, o comportamento é o mesmo de antes (todas as memórias são consideradas).
Isolamento por tenant (stores compartilhados)
Use tenant_id para garantir que dois tenants com o mesmo user_id em um store compartilhado nunca vejam as memórias um do outro. A chave efetiva de isolamento é tenant × user × session.
from grkmemory import GRKMemory, MemoryConfig
# Uma instância GRKMemory por tenant (recomendado para stores compartilhados)
grk = GRKMemory(MemoryConfig(tenant_id="tenant_x"))
grk.save_conversation(msgs, user_id="guest") # armazenado sob tenant_x
grk.search("pedidos", user_id="guest") # escopo restrito a tenant_x
# Ou sobrescrever por chamada
grk.search("pedidos", user_id="guest", tenant_id="other_tenant")
tenant_id=None (padrão) preserva o namespace global existente — nenhum deploy atual precisa mudar. A variável GRKMEMORY_TENANT_ID define o padrão no config via env.
⏳ Fatos temporais (bi-temporalidade)
Fatos mudam com o tempo ("threshold aprovado = 0.7" → semanas depois "= 0.5"). Cada memória pode carregar uma janela de validade [valid_from, valid_until) além do created_at, e uma memória nova pode superseder a antiga sem apagá-la:
# Janela de validade explícita no save (opcional)
repo.save({"summary": "threshold aprovado = 0.7", "tags": ["threshold"],
"valid_from": "2026-01-10T00:00:00"})
repo.save({"summary": "threshold aprovado = 0.5", "tags": ["threshold"],
"valid_from": "2026-03-15T00:00:00"})
# A decisão nova supersede a antiga (anotação, nunca delete)
grk.supersede(old_id, new_id)
# Recall padrão = "válido agora": só o fato vigente aparece
grk.search("threshold")
# Time-travel: o que era verdade em fevereiro?
grk.search("threshold", as_of="2026-02-01T00:00:00")
Regras: valid_until é exclusivo; sem campos de validade a memória é sempre válida (100% retrocompatível); em consultas as_of explícitas o created_at faz papel de valid_from quando este falta. A memória superada continua acessível via as_of e get_memory_detail — o campo superseded_by aponta para quem a substituiu. Detecção automática de supersessão (LLM/heurística) está fora de escopo por ora (ver issue #50).
🔌 Servidor MCP (grkmemory[mcp])
Exponha a memória como tools para qualquer cliente MCP (Claude Code, claude.ai, Agent SDK):
pip install grkmemory[mcp]
# Claude Code
claude mcp add grkmemory -- grkmemory-mcp
Tools expostas: memory_save (ingestão sem LLM — summary/tags/entities/key_points precomputados), memory_search (métodos graph/embedding/tags/entities/hybrid + as_of para time-travel), memory_supersede, memory_get, memory_stats_tool.
Configuração 100% via env vars padrão da lib (MEMORY_FILE, GRKMEMORY_STORAGE_BACKEND file/postgres, GRKMEMORY_TENANT_ID, BACKGROUND_MEMORY_LIMIT, ...). Embeddings ligam automaticamente quando há credencial OpenAI/Azure no ambiente (OPENAI_API_KEY/AZURE_OPENAI_API_KEY/AZURE_FOUNDRY_KEY) ou ENABLE_EMBEDDINGS=true; sem credencial o recall usa graph/tags/entities e o servidor funciona 100% offline com o file backend. Embeddings nunca aparecem nos payloads das tools.
Instalação por IDE (VS Code / JetBrains) e Claude Desktop
As extensões de IDE do Claude Code leem a mesma configuração MCP do CLI: .mcp.json na raiz do projeto (escopo projeto, versionável) ou ~/.claude.json (escopo user). Não precisa de terminal para ativar — gere o arquivo pronto com:
grkmemory-mcp init # cria/mescla ./.mcp.json (escopo projeto)
grkmemory-mcp init --desktop # idem para o Claude Desktop (type: stdio, paths absolutos)
grkmemory-mcp init --memory-file /outro/caminho/memoria.json
O comando aponta o bloco grkmemory para o binário em execução (path absoluto), define MEMORY_FILE (default ~/.grkmemory/memoria.json, diretório criado na hora) e preserva outros servidores já configurados no arquivo. Na primeira abertura a extensão pede aprovação do servidor; use /mcp no chat para ver o status da conexão.
Bloco gerado (referência, caso prefira escrever à mão):
{
"mcpServers": {
"grkmemory": {
"command": "/caminho/venv/bin/grkmemory-mcp",
"args": [],
"env": { "MEMORY_FILE": "/Users/voce/.grkmemory/memoria.json" }
}
}
}
Alternativa zero-install com uv: "command": "uvx", "args": ["--from", "grkmemory[mcp]", "grkmemory-mcp"].
Recall vetorial sem chave de API (grkmemory[local-embeddings]): com GRKMEMORY_EMBEDDING_PROVIDER=local, os métodos embedding/hybrid rodam com modelo on-device (fastembed/ONNX, default sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2, 384 dims, multilíngue — ~120MB baixados no primeiro uso; troque via GRKMEMORY_LOCAL_EMBEDDING_MODEL, precisa ser modelo suportado pelo fastembed). O servidor MCP liga embeddings automaticamente nesse modo — memória semântica 100% offline e keyless. Com pgvector, aponte GRKMEMORY_EMBEDDING_DIM para a dimensão do modelo.
Recall não é automático só com o MCP: instalar o servidor torna as tools disponíveis — o Claude decide chamá-las pelo contexto. Para memória verdadeiramente automática, use o plugin abaixo.
Plugin Claude Code (memória automática)
O plugin adiciona hooks que fazem o ciclo completo sem nenhuma instrução:
- UserPromptSubmit → busca memórias relevantes para o prompt e injeta como contexto do turno (recall automático, escopado por projeto);
- Stop/SessionEnd → destila a sessão (tarefa + desfecho + conceitos) e salva/atualiza uma memória por sessão, com segredos redactados antes de persistir;
- comando
/memoria→ buscar, salvar, supersedir e inspecionar pela conversa; - registra o MCP server automaticamente (dispensa
.mcp.json).
pip install "grkmemory[mcp]" # o plugin usa o grkmemory-mcp do PATH (ou uvx)
/plugin marketplace add BeMonkAI/GRKMemory
/plugin install grkmemory@grkmemory
Os hooks nunca quebram a sessão (falhas vão para stderr e saem 0) e funcionam offline (recall graph/tags). Store default ~/.grkmemory/memoria.json; escopo por projeto via tenant_id derivado do diretório.
Sessões headless (claude -p em automação): as tools MCP entram deferred; use ENABLE_TOOL_SEARCH=false claude -p ... para carregá-las upfront.
Sessões cloud / claude.ai (MCP remoto via HTTP)
Sessões em containers efêmeros (Claude Code web, conectores claude.ai) não conseguem usar o transporte stdio local — o binário e o arquivo de memória evaporam com o container. Para esse caso, rode o servidor em um host seu e conecte por URL:
# no host (Railway, VM, etc.)
export GRKMEMORY_MCP_TOKENS="grk_um_token_por_consumidor" # auth é OBRIGATÓRIA no modo HTTP
export GRKMEMORY_STORAGE_BACKEND=postgres # recomendado (multi-instância)
export GRKMEMORY_POSTGRES_DSN=postgres://...
grkmemory-mcp serve --http --host 0.0.0.0 --port 8080
O cliente conecta em https://<host>/mcp com header Authorization: Bearer <token>. Requisição sem token válido recebe 401 — um servidor exposto sem auth configurada nem sobe (fail-fast). Alternativa ao token estático: um arquivo de tokens GRKAuth (GRKMEMORY_TOKENS_FILE) com ciclo de vida completo via grkmemory-token (permissões, revogação).
⚡ API assíncrona
Para uso em código assíncrono (ex.: AtendentePro) sem bloquear o event loop, use os métodos *_async, que executam a lógica síncrona em thread (ex.: asyncio.to_thread em Python 3.9+):
import asyncio
from grkmemory import GRKMemory
grk = GRKMemory()
async def main():
results = await grk.search_async("IA")
await grk.save_conversation_async([
{"role": "user", "content": "Olá"},
{"role": "assistant", "content": "Oi!"}
])
response = await grk.chat_async("O que discutimos?")
asyncio.run(main())
Disponíveis: search_async, save_conversation_async, chat_async, chat_with_history_async. Com AuthenticatedGRK: search_async, save_conversation_async, chat_async (com checagem de permissão).
🔓 Modo Offline (Sem Token)
O modo offline usa MemoryRepository com enable_embeddings=False e serve como backend sem API key para testes ou ambientes restritos, usando apenas tags, entities e grafo semântico (sem embeddings). Você pode usar o MemoryRepository sem token/API key quando embeddings estão desabilitados:
from grkmemory import MemoryRepository
# Modo offline - não precisa de API key
repo = MemoryRepository(
memory_file="memories.json",
enable_embeddings=False # ← Chave: desabilitar embeddings
)
# Funcionalidades disponíveis sem token:
# ✅ Salvar memórias
repo.save({
"summary": "Conversa sobre Python",
"tags": ["python", "programação"],
"entities": ["Python"],
"key_points": ["Linguagem interpretada"]
})
# ✅ Buscar por tags
results = repo.search("python", method="tags")
# ✅ Buscar por entities
results = repo.search("Python", method="entities")
# ✅ Buscar por grafo (sem embeddings)
results = repo.search("programação", method="graph")
# ❌ Busca por embedding requer API key
# results = repo.search("query", method="embedding") # Retorna vazio sem API key
Nota:
GRKMemoryeMemoryConfigrequerem API key. ApenasMemoryRepositorycomenable_embeddings=Falsefunciona sem token.
💾 Salvando Conversas em JSON
O GRKMemory salva automaticamente as conversas em um arquivo JSON estruturado:
Estrutura do JSON
{
"sessoes": [
{
"id": "sess_abc123",
"timestamp": "2025-01-09T12:00:00",
"summary": "Discussão sobre Python e IA",
"tags": ["python", "ia", "programação"],
"entities": ["Python", "OpenAI", "GPT"],
"concepts": ["machine learning", "api"],
"messages": [
{"role": "user", "content": "..."},
{"role": "assistant", "content": "..."}
]
}
]
}
Estrutura do TOON (Token-Optimized Object Notation)
O mesmo conteúdo em TOON ocupa ~25% menos tokens, ideal para contexto de LLM:
sessoes[1]:
- id: sess_abc123
timestamp: "2025-01-09T12:00:00"
summary: Discussão sobre Python e IA
tags[3]: python,ia,programação
entities[3]: Python,OpenAI,GPT
concepts[2]: machine learning,api
messages[2]{role,content}:
user,Vamos falar sobre Python
assistant,Claro! O que você quer saber?
Nota: TOON elimina chaves, colchetes e aspas redundantes, compactando listas e tabelas em notação posicional. Instale com
pip install toon_format.
Usando o MemoryRepository diretamente
from grkmemory import MemoryRepository
# Inicializar repositório
repo = MemoryRepository(memory_file="minhas_memorias.json")
# Salvar memória estruturada
memoria = {
"summary": "Conversa sobre Python",
"tags": ["python", "programação"],
"entities": ["Python", "VS Code"],
"concepts": ["sintaxe", "bibliotecas"],
"messages": [
{"role": "user", "content": "Como instalar Python?"},
{"role": "assistant", "content": "Baixe em python.org..."}
]
}
repo.save(memoria)
# Buscar memórias
resultados = repo.search("Python", method="tags")
📊 Métodos de Busca
| Método | Descrição |
|---|---|
graph |
Grafo semântico (recomendado) |
embedding |
Similaridade vetorial |
tags |
Busca por tags |
entities |
Busca por entidades |
# Busca por grafo semântico
results = secure.search("IA", method="graph")
# Busca por embedding
results = secure.search("machine learning", method="embedding")
📈 Estatísticas
# Estatísticas gerais
stats = secure.get_stats()
print(f"Total de memórias: {stats['total_memories']}")
# Estatísticas do grafo
graph_stats = secure.get_graph_stats()
print(f"Nós: {graph_stats['total_nodes']}")
print(f"Arestas: {graph_stats['total_edges']}")
📁 Estrutura do Projeto
GRKMemory/
├── grkmemory/ # 📦 Pacote principal
│ ├── core/ # Classes principais
│ ├── memory/ # Repositório de memória
│ ├── graph/ # Grafo semântico
│ ├── auth/ # Autenticação
│ └── utils/ # Utilitários
├── examples/ # 💡 Exemplos de uso
├── papers/ # 📄 Documentação técnica
└── README.md
📚 Exemplos
Veja a pasta examples/ para exemplos completos:
| Exemplo | Descrição |
|---|---|
01_basic_usage.py |
Uso básico |
02_custom_config.py |
Configuração personalizada |
03_chatbot_with_memory.py |
Chatbot com memória |
04_graph_analysis.py |
Análise do grafo |
05_batch_processing.py |
Processamento em lote |
06_authentication.py |
Uso com autenticação |
07_storage_formats.py |
Formatos de armazenamento (JSON/TOON) |
08_azure_openai.py |
Integração com Azure OpenAI |
09_multi_tenant.py |
Multi-tenant com user_id e session_id |
10_async_usage.py |
Uso da API assíncrona (search_async, chat_async) |
🔬 Performance
Números de benchmarks internos (corpus de conversas reais; comparação: enviar o histórico completo na context window vs recall seletivo do GRKMemory). Reproduzíveis via repo.get_token_estimate() e os harnesses em tests/ — meça no seu corpus antes de assumir os mesmos ganhos:
| Métrica | Histórico completo na context window | GRKMemory (recall seletivo) |
|---|---|---|
| Tokens/query | ~50.000 | ~2.500 (~95% de economia neste corpus) |
| Latência de recuperação | cresce com o histórico | ~constante (grafo/índice local) |
✅ Qualidade
Sem selos — sinais verificáveis:
- Suite de testes: 249 testes rodando em CI a cada push/PR (Python 3.10–3.13), incluindo testes de integração contra Postgres/pgvector real e harnesses de regressão de recall (ablation/formula sweep) — veja
tests/e o workflowci.yml. - Coverage com gate mínimo configurado no CI.
- Em produção: a lib roda em serviços MonkAI de produção como camada de memória de agentes.
- Por que só wheels (sem sdist)? O código é compilado com Cython para proteção de propriedade intelectual — decisão deliberada, não descuido. A API pública, os testes e este README são o contrato auditável.
📞 Contato
Para obter seu token de acesso ou suporte:
📧 Email: contato@monkai.com.br
🌐 Site: www.monkai.com.br
📄 Licença
MIT License - veja LICENSE
👨💻 Autor
Arthur Vaz - MonkAI
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file grkmemory-1.16.1-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 961.7 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfca28f01280182d7292ca2bae5932bed09e3192fb45fb1ba0472a44a5d8c715
|
|
| MD5 |
4e17ee208c85a3fd79efffad1c49ddd6
|
|
| BLAKE2b-256 |
e8a8965c184d39c7e5b0eefe5f2f542ec325466e4719d3b20cfca764d2d69bea
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp313-cp313-win_amd64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp313-cp313-win_amd64.whl -
Subject digest:
dfca28f01280182d7292ca2bae5932bed09e3192fb45fb1ba0472a44a5d8c715 - Sigstore transparency entry: 2117764429
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 7.2 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
108e49b7053de57020bdb7e0b73b66c093a4be1dd75adaa05786775973912da1
|
|
| MD5 |
a431adca4e06f8e98a32a03bc09ef191
|
|
| BLAKE2b-256 |
b8a19a9aea4b796f8f0a9ff8092891398ea3f265828def793f1d202bf5713b6e
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl -
Subject digest:
108e49b7053de57020bdb7e0b73b66c093a4be1dd75adaa05786775973912da1 - Sigstore transparency entry: 2117763349
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 7.1 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2bb86fd3098fc39f5ea1937b70284c282d8e179af9a81b13bc1244893449f31d
|
|
| MD5 |
f603427bb386cba179251640b39680ee
|
|
| BLAKE2b-256 |
40991fcc67cee90b0c158dfac2b93e58a4e63f3c54b56b64f5e5857d80688312
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl -
Subject digest:
2bb86fd3098fc39f5ea1937b70284c282d8e179af9a81b13bc1244893449f31d - Sigstore transparency entry: 2117764864
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.13, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84694228e97681b0924a667fb5e307827402f83fc6239bd53670e1e93a084c23
|
|
| MD5 |
2219b955620098e9384587d46084643f
|
|
| BLAKE2b-256 |
655f088c11da165d3c72262ff4cbb51731e04aa41d2b858dbdcfe172eb3b2920
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl -
Subject digest:
84694228e97681b0924a667fb5e307827402f83fc6239bd53670e1e93a084c23 - Sigstore transparency entry: 2117799317
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp313-cp313-macosx_10_13_universal2.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp313-cp313-macosx_10_13_universal2.whl
- Upload date:
- Size: 2.3 MB
- Tags: CPython 3.13, macOS 10.13+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d227341731bf91730695aa01c34e5d5ffa4e64822eae90486b40bfc2ad8c1811
|
|
| MD5 |
94cc8ebdaf98890f785c1066a70f3054
|
|
| BLAKE2b-256 |
5cf8ed9321d61ef6b3a7c543b1663cae27860660c3ce8fcb9b3d0d85a48ec79f
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp313-cp313-macosx_10_13_universal2.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp313-cp313-macosx_10_13_universal2.whl -
Subject digest:
d227341731bf91730695aa01c34e5d5ffa4e64822eae90486b40bfc2ad8c1811 - Sigstore transparency entry: 2117798734
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 968.5 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e57a4b72e04d44ec90926b0d67686f279e11cc87abc8bad1212899f52b209083
|
|
| MD5 |
ff16354f622efb7d6f80b4a190c5bedd
|
|
| BLAKE2b-256 |
13c0a7b748731d41681890aceaf5080e8b345fee0a34f819785b56ecf3243643
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp312-cp312-win_amd64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp312-cp312-win_amd64.whl -
Subject digest:
e57a4b72e04d44ec90926b0d67686f279e11cc87abc8bad1212899f52b209083 - Sigstore transparency entry: 2117763693
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 7.3 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e4c8b32dcb1c62cd35e7281850335b971d2181ce3532b122ada14aba0bdb567
|
|
| MD5 |
2107e3dbaa97e695493e2b70b44a0b6a
|
|
| BLAKE2b-256 |
1b2057a134f5decf125806f0c7f2ed9f9b36db78bcee88ea9ef72fdb28385942
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl -
Subject digest:
8e4c8b32dcb1c62cd35e7281850335b971d2181ce3532b122ada14aba0bdb567 - Sigstore transparency entry: 2117719999
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 7.2 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82f86cba90f2b319c433e09d7bfc6963a24304ee2547db4b5b1e7c4e56e16ba1
|
|
| MD5 |
5c5ee02586975cc547129474d768f9c6
|
|
| BLAKE2b-256 |
e71af7bf5c24dd24a9a06da35ab0f916457d5a7a148999779b214ea0de0c7739
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl -
Subject digest:
82f86cba90f2b319c433e09d7bfc6963a24304ee2547db4b5b1e7c4e56e16ba1 - Sigstore transparency entry: 2117765038
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c7a080936ff73db8dfa9f7374b0eaebb9439fe66fa89d6854836f6e5eb6f993
|
|
| MD5 |
49ae0ccd8241e99f41139bcd72d35aa1
|
|
| BLAKE2b-256 |
5beeb2df95445d1fb0fcc895e0415e32434200767068676770faac73cdc7b8c3
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl -
Subject digest:
4c7a080936ff73db8dfa9f7374b0eaebb9439fe66fa89d6854836f6e5eb6f993 - Sigstore transparency entry: 2117799205
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp312-cp312-macosx_10_13_universal2.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp312-cp312-macosx_10_13_universal2.whl
- Upload date:
- Size: 2.3 MB
- Tags: CPython 3.12, macOS 10.13+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45ec2eae5f5f91cdddaffa62980e84e088582420e16c3e427303407760d148eb
|
|
| MD5 |
cde7460bce5110becd82aad34f21e590
|
|
| BLAKE2b-256 |
5c4209806ca9d96853899c25b77270248245e297f91d303666157654c481e462
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp312-cp312-macosx_10_13_universal2.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp312-cp312-macosx_10_13_universal2.whl -
Subject digest:
45ec2eae5f5f91cdddaffa62980e84e088582420e16c3e427303407760d148eb - Sigstore transparency entry: 2117799109
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 984.1 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e2d820826371f8aa6a292f1dbf8bc7f8ae31063b2cce8c43c12c4067fb5fdd4
|
|
| MD5 |
6972fac2b14289b5b64847d19d1daace
|
|
| BLAKE2b-256 |
0ae16543fb3941872a78ffa4f6f54fbd4bd7c8d67c166267cd19dfc5a0966220
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp311-cp311-win_amd64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp311-cp311-win_amd64.whl -
Subject digest:
8e2d820826371f8aa6a292f1dbf8bc7f8ae31063b2cce8c43c12c4067fb5fdd4 - Sigstore transparency entry: 2117764261
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 7.2 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4274994ecb85b3f11acc47b5be928b034c207aabf7afcc5c8cafd3c54e63002d
|
|
| MD5 |
db262adc4785382cd5aa7ebf8b799fa1
|
|
| BLAKE2b-256 |
c480357a4cef27602879f16d6a9ebeb133812cd429000b72f9b0d851b1bce770
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl -
Subject digest:
4274994ecb85b3f11acc47b5be928b034c207aabf7afcc5c8cafd3c54e63002d - Sigstore transparency entry: 2117763888
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 7.3 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec41fb59236df3d8963f1af42c41d310ea31c61396bbda8d105b29a0a91b2f99
|
|
| MD5 |
3df3e7f526a3bebbf172c7447203c820
|
|
| BLAKE2b-256 |
6efe2e836e6a091a0fd533adca36f79212afc2cc52a9a8109ad6afa01ce5fd7f
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl -
Subject digest:
ec41fb59236df3d8963f1af42c41d310ea31c61396bbda8d105b29a0a91b2f99 - Sigstore transparency entry: 2117764773
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa3e283d515271a9d7aab0e17013be2a77710319c845a517dd12640c7e874aa8
|
|
| MD5 |
4c208e41d559f21a71c88f2ff843f87e
|
|
| BLAKE2b-256 |
54f27323a2db08224c011bb1d259b24e7fca24ea88dff8ac9e5d0509273bfbfc
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp311-cp311-macosx_10_9_x86_64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp311-cp311-macosx_10_9_x86_64.whl -
Subject digest:
aa3e283d515271a9d7aab0e17013be2a77710319c845a517dd12640c7e874aa8 - Sigstore transparency entry: 2117799009
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp311-cp311-macosx_10_9_universal2.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp311-cp311-macosx_10_9_universal2.whl
- Upload date:
- Size: 2.3 MB
- Tags: CPython 3.11, macOS 10.9+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7a2ea01c7c5cd10736c0ea340b5946ea4b74a9f6168b03ea9372cc8370738fb
|
|
| MD5 |
2c26ed0c4bcb9d947e599e528325a3ab
|
|
| BLAKE2b-256 |
a4a8271410d1ba29074461823ce2880ead0cac0c374f89437ecbef3f98a41441
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp311-cp311-macosx_10_9_universal2.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp311-cp311-macosx_10_9_universal2.whl -
Subject digest:
f7a2ea01c7c5cd10736c0ea340b5946ea4b74a9f6168b03ea9372cc8370738fb - Sigstore transparency entry: 2117798883
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 978.8 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb4b8bbc228568b26c87b620951e2b5f9498d4e61f5bc2bcd92262aa64a8f4d6
|
|
| MD5 |
cecffa8d9fc3cee5cab022c14246efec
|
|
| BLAKE2b-256 |
de8ee49d1d0d1d36ff01e44ed90d18236eb4e78fb80f0550c5b21cc3fa32dbc4
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp310-cp310-win_amd64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp310-cp310-win_amd64.whl -
Subject digest:
bb4b8bbc228568b26c87b620951e2b5f9498d4e61f5bc2bcd92262aa64a8f4d6 - Sigstore transparency entry: 2117763539
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 6.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
172ee1a43f4ce4434cf97796d042a3e6a9bbb3ce7c384640fe512f71847adb2d
|
|
| MD5 |
8d336d965abaf7f290c98b793896b594
|
|
| BLAKE2b-256 |
77ebdd043845f633c5ff4d6d250aee83f07543e22e926a1b3ea5367b8bc3b50a
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl -
Subject digest:
172ee1a43f4ce4434cf97796d042a3e6a9bbb3ce7c384640fe512f71847adb2d - Sigstore transparency entry: 2117764068
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 6.9 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5b24669209745cb52693aca6901991696eb5df77a01a564210d4d8e2ab17b2c
|
|
| MD5 |
c82ad76f57e7fa7abef639cd4b1abbc8
|
|
| BLAKE2b-256 |
c12ea41ceec0bc6bf29f29f3ae239531850cd41aced60c4779661c9121ad88a1
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl -
Subject digest:
b5b24669209745cb52693aca6901991696eb5df77a01a564210d4d8e2ab17b2c - Sigstore transparency entry: 2117764633
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp310-cp310-macosx_10_9_x86_64.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp310-cp310-macosx_10_9_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.10, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bec153a13eca335bb135a0e694642ceb30a57d96e70e0bcdc7e33035463697c5
|
|
| MD5 |
9ff40025340f97635faf1aa2cebe6979
|
|
| BLAKE2b-256 |
fa17ca39cf964284fd264da96c828b2fa5b9b744dbd916bdee302dc8a62c7b6d
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp310-cp310-macosx_10_9_x86_64.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp310-cp310-macosx_10_9_x86_64.whl -
Subject digest:
bec153a13eca335bb135a0e694642ceb30a57d96e70e0bcdc7e33035463697c5 - Sigstore transparency entry: 2117799426
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type:
File details
Details for the file grkmemory-1.16.1-cp310-cp310-macosx_10_9_universal2.whl.
File metadata
- Download URL: grkmemory-1.16.1-cp310-cp310-macosx_10_9_universal2.whl
- Upload date:
- Size: 2.3 MB
- Tags: CPython 3.10, macOS 10.9+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8d2fd4a65786c1a9000ffb6ea65ec7e559e8879c6eaee3d143fcadb323160b7
|
|
| MD5 |
366791b3ae4922e19354a5004fac5a66
|
|
| BLAKE2b-256 |
0e689ddc725e683150062e5f887be8af4937799818b0c498a5d8be89dd1dc201
|
Provenance
The following attestation bundles were made for grkmemory-1.16.1-cp310-cp310-macosx_10_9_universal2.whl:
Publisher:
publish.yml on BeMonkAI/GRKMemory
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
grkmemory-1.16.1-cp310-cp310-macosx_10_9_universal2.whl -
Subject digest:
a8d2fd4a65786c1a9000ffb6ea65ec7e559e8879c6eaee3d143fcadb323160b7 - Sigstore transparency entry: 2117798623
- Sigstore integration time:
-
Permalink:
BeMonkAI/GRKMemory@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BeMonkAI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@00fc27cc415a4dcb142efd75119ba7f12640d587 -
Trigger Event:
push
-
Statement type: