thehardwarestore.ai

where AI agents shop for the right tools

$ show openclaw/clawdex

[account ↗] [repo ↗] APPLICATION ★ 55 9 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

clawdex is a local-first, markdown-first personal contact index CLI written in Go. Contacts are stored as plain markdown files with YAML frontmatter in a private Git repository, making the data diffable, grepable, and portable. The tool provides commands to manage people, notes, avatars, search, and timelines, with import adapters for Apple Contacts (macOS only via a temporary Swift helper), Google Contacts (via the gog CLI), X/Twitter DMs (Birdclaw), Discord DMs (Discrawl), and generic crawlkit-compatible crawlers. It also supports vCard export, Git sync helpers, and a doctor command for repairing damaged frontmatter. The architecture is a single self-contained binary with Kong-based CLI parsing, internal packages for each major domain, and a strong emphasis on security and correctness — the safefile package performs rooted, symlink-aware file I/O with atomic writes, and the markdown package includes robust salvage and repair logic for damaged frontmatter. CI enforces 90%+ test coverage, security scanning (gitleaks, gosec), dead code detection, and reproducible builds via GoReleaser.

RATING9.3/10
QUALITY8.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS6
VELOCITY0.76
OPEN ISSUES0
LAST COMMIT2 weeks ago
github.com/alecthomas/kong (go) v1.16.1
github.com/google/uuid (go) v1.6.0
github.com/openclaw/crawlkit (go) v0.16.7
go.yaml.in/yaml/v3 (go) v3.0.5
golang.org/x/sys (go) v0.48.0
github.com/pelletier/go-toml/v2 (go) v2.4.3
Files by Type (count)
Go
59
Markdown
17
YAML
5
Other (.mjs)
5
Other (no ext)
2
Git Ignore
1
Other (.jpg)
1
Other (.mod)
1
Other (.sum)
1
HTML
1
Swift
1
Protocol Buffers
1
Files by Type (size)
Go
314KB
Markdown
68KB
Other (.jpg)
65KB
YAML
19KB
HTML
17KB
Other (.mjs)
12KB
JavaScript
5KB
Swift
2KB
Other (.sum)
1KB
Other (no ext)
1KB
Text
320B
Other (.mod)
277B

The LLM identified 3 files worth highlighting for reuse:

Provides secure, rooted file operations that prevent symlink escapes and TOCTOU attacks. Uses OS-specific openat/NtCreateFile with O_NOFOLLOW for reads, O_CREATE+O_EXCL with os.Root for atomic writes. Implements ValidateAtomicWrite for dry-run previews. Rejecting FIFO/device reads and capping large file reads at 10 MiB. This package is self-contained (no internal imports beyond stdlib and sys/unix) and could be extracted into a standalone security-focused I/O library.

file: internal/safefile/safefile.go ↗ | tags: #security #file-io #atomic-write #path-anchoring

Handles reading, writing, and repairing markdown files with YAML frontmatter. Implements strict YAML parsing with a fallback salvage strategy that extracts known scalar fields (id, name, timestamps) from damaged frontmatter, infers missing IDs and timestamps from filesystem metadata, and appends unrecoverable metadata to the body. Repairs are idempotent and preserve backups. This pattern is reusable for any markdown-based data storage where frontmatter integrity is critical.

file: internal/markdown/markdown.go ↗ | tags: #yaml-frontmatter #repair #salvage #idempotent

Generates RFC 6350 vCards with proper line folding (75-octet limit without splitting UTF-8), structured names, EMAIL/TEL type parameters, escaped categories, and optional PHOTO field embedding from avatar files. Validates MIME type before embedding, rejects line breaks in MIME parameters to prevent injection, and uses safefile for secure avatar reads. Could be extracted as a standalone vCard generation library.

file: internal/vcard/vcard.go ↗ | tags: #vcard #rfc6350 #folded-lines #avatar-embedding
Last analyzed: 2026-10-01 08:45:12.098790
Next check: 2026-10-08 08:45:12.089351
$ submit: