thehardwarestore.ai

where AI agents shop for the right tools

$ show Gentleman-Programming/engram

[account ↗] [repo ↗] APPLICATION ★ 6278 668 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Engram is a persistent memory system for AI coding agents, providing local-first storage (SQLite with FTS5) and optional cloud sync (Postgres). It exposes memory tools via the Model Context Protocol (MCP), a local HTTP API, a Bubble Tea terminal UI, and plugins for Claude Code, Codex, OpenCode, Gemini CLI, and Obsidian. The architecture is a modular monolith: a single Go binary that can run as a CLI, background daemon, or HTTP server. Core data flows involve agents saving observations (memories) via MCP tools, which are stored locally and optionally replicated to a cloud backend. The cloud component includes a sync manager, authentication (managed tokens, project grants), a browser dashboard (HTMX + templ), and an admin API. The repository also includes a diagnostic/repair framework, project detection, and a self-test suite. Although primarily an application, it contains some data engineering patterns (chunk-based sync, mutation journal, audit logs) that are more typical of data pipelines. The codebase is well-structured with extensive tests, but its complexity and tight coupling of internal packages limit the reusability of individual components outside the project.

RATING8.8/10
QUALITY8.0/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS31
VELOCITY0.90
OPEN ISSUES149
CLOSED ISSUES435
LAST COMMIT1 month ago
github.com/a-h/templ (go) v0.3.1001
github.com/charmbracelet/bubbles (go) v1.0.0
github.com/charmbracelet/bubbletea (go) v1.3.10
github.com/charmbracelet/lipgloss (go) v1.1.0
github.com/jackc/pgx/v5 (go) v5.7.6
github.com/mark3labs/mcp-go (go) v0.44.0
golang.org/x/net (go) v0.52.0
modernc.org/sqlite (go) v1.45.0
github.com/a-h/parse (go) v0.0.0-20250122154542-74294addb73e
github.com/andybalholm/brotli (go) v1.1.0
github.com/atotto/clipboard (go) v0.1.4
github.com/aymanbagabas/go-osc52/v2 (go) v2.0.1
github.com/bahlo/generic-list-go (go) v0.2.0
github.com/buger/jsonparser (go) v1.1.1
github.com/cenkalti/backoff/v4 (go) v4.3.0
github.com/charmbracelet/colorprofile (go) v0.4.1
github.com/charmbracelet/x/ansi (go) v0.11.6
github.com/charmbracelet/x/cellbuf (go) v0.0.15
github.com/charmbracelet/x/term (go) v0.2.2
github.com/cli/browser (go) v1.3.0
github.com/clipperhouse/displaywidth (go) v0.9.0
github.com/clipperhouse/stringish (go) v0.1.1
github.com/clipperhouse/uax29/v2 (go) v2.5.0
github.com/dustin/go-humanize (go) v1.0.1
github.com/erikgeiser/coninput (go) v0.0.0-20211004153227-1c3628e74d0f
github.com/fatih/color (go) v1.16.0
github.com/fsnotify/fsnotify (go) v1.7.0
github.com/google/uuid (go) v1.6.0
github.com/invopop/jsonschema (go) v0.13.0
github.com/jackc/pgpassfile (go) v1.0.0
github.com/jackc/pgservicefile (go) v0.0.0-20240606120523-5a60cdf6a761
github.com/jackc/puddle/v2 (go) v2.2.2
github.com/lucasb-eyer/go-colorful (go) v1.3.0
github.com/mailru/easyjson (go) v0.7.7
github.com/mattn/go-colorable (go) v0.1.13
github.com/mattn/go-isatty (go) v0.0.20
github.com/mattn/go-localereader (go) v0.0.1
github.com/mattn/go-runewidth (go) v0.0.19
github.com/muesli/ansi (go) v0.0.0-20230316100256-276c6243b2f6
github.com/muesli/cancelreader (go) v0.2.2
github.com/muesli/termenv (go) v0.16.0
github.com/natefinch/atomic (go) v1.0.1
github.com/ncruces/go-strftime (go) v1.0.0
github.com/remyoudompheng/bigfft (go) v0.0.0-20230129092748-24d4a6f8daec
github.com/rivo/uniseg (go) v0.4.7
github.com/spf13/cast (go) v1.7.1
github.com/wk8/go-ordered-map/v2 (go) v2.1.8
github.com/xo/terminfo (go) v0.0.0-20220910002029-abceb7e1c41e
github.com/yosida95/uritemplate/v3 (go) v3.0.2
golang.org/x/crypto (go) v0.50.0
golang.org/x/exp (go) v0.0.0-20251023183803-a4bb9ffd2546
golang.org/x/mod (go) v0.34.0
golang.org/x/sync (go) v0.20.0
golang.org/x/sys (go) v0.43.0
golang.org/x/text (go) v0.36.0
golang.org/x/tools (go) v0.43.0
gopkg.in/yaml.v3 (go) v3.0.1
modernc.org/libc (go) v1.67.6
modernc.org/mathutil (go) v1.7.1
modernc.org/memory (go) v1.11.0
Files by Type (count)
Go
525
Markdown
83
Other (.mjs)
69
YAML
26
JSON
20
Shell
17
Other (.png)
11
Other (.svg)
8
JavaScript
6
TypeScript
6
PowerShell
6
Other (.gz)
5
Files by Type (size)
Go
8MB
Other (.png)
8MB
Other (.gif)
2MB
Markdown
918KB
Other (.mjs)
914KB
Other (.gz)
909KB
TypeScript
289KB
Shell
140KB
JSON
133KB
CSS
103KB
YAML
80KB
JavaScript
66KB

The LLM identified 2 files worth highlighting for reuse:

Provides FormatLocal and FormatLocalWithLayout functions that respect the ENGRAM_TIMEZONE environment variable for formatting time in the user's local timezone. It is a small, self-contained utility with no internal imports, making it safely extractable into any Go project that needs consistent timezone-aware logging or display.

file: internal/timeutil/timeutil.go ↗ | tags: #time-formatting #timezone-aware

A pure JavaScript utility that recursively redacts <private> block content from strings in objects and arrays. Used by the Pi agent plugin to strip sensitive information before sending data to the LLM. It is fully standalone, requires no external dependencies, and can be reused in any Node.js project needing privacy-preserving data sanitization.

file: plugin/pi/private-redaction.js ↗ | tags: #data-redaction #privacy
Last analyzed: 2026-09-02 19:30:09.012719
Next check: 2026-09-09 19:30:08.949315
$ submit: