{"adoption": {"forks": 292, "observed_at": "2026-08-28T04:05:06.087620+00:00", "stars": 1580}, "canonical_url": "https://ross.abutalabs.com/products/waku-agent", "card": {"archived": false, "artifact_type": "framework", "description": "Waku Waku! Waku Agent is a local-first AI agent harness you actually own, including loop, memory, eval, all in code built to stay legible as it grows.", "domain": ["artificial-intelligence", "large-language-models", "developer-tools", "self-hosted"], "enriched": true, "function": ["agent-framework", "llm-inference", "rag", "chatbot", "testing", "monitoring", "database"], "health_score": 99, "homepage": "seanchen.io", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["ShenSeanChen/waku-agent"], "name": "ShenSeanChen/waku-agent", "platform": ["python", "cli", "cross-platform", "self-hosted"], "pushed_at": "2026-08-17T00:22:16+00:00", "repo": "ShenSeanChen/waku-agent", "stars": 1580, "tags": ["local-first", "agent-loop", "agent-memory", "llm-evals", "llmops", "sqlite-memory", "personal-assistant", "telegram-gateway", "readable-code", "ai-agents"], "topics": ["agent-framework", "ai-agent", "ai-assistant", "claude", "evals", "llm", "llmops", "local-first", "openai", "personal-assistant", "python", "sqlite"], "urls": [], "use_cases": ["build a personal AI assistant that runs locally on my laptop", "learn how an agent loop and memory system work by reading real code", "run an LLM agent with persistent memory stored in sqlite", "evaluate my agent with deterministic tests and LLM-as-judge before releasing", "watch an agent's message flow in a local dashboard", "self-host a chatbot with a wake word and Telegram gateway"], "what_it_is": "Waku Agent is a local-first AI agent harness in Python that exposes the full agent stack — harness, loop, memory, and eval/LLM-Ops — as small, readable code. Memory lives in a single SQLite file with semantic, episodic, and procedural layers, and it ships with a terminal chat, a browser dashboard, and built-in deterministic plus LLM-as-judge evals.", "when_to_avoid": ["you need a production-grade, battle-tested multi-agent orchestration platform", "you need distributed or multi-user agent deployment at scale", "you want a no-code or fully managed agent builder", "you need non-Python runtimes or heavy vector-database integrations out of the box"], "when_to_choose": ["you want a legible, hackable agent codebase instead of an opaque framework", "you want local-first ownership of your agent's memory as a plain SQLite file", "you want evals and a release gate built into your agent harness", "you're learning agent architecture (loop, memory, eval) from a working example"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/waku-agent", "repo": "ShenSeanChen/waku-agent", "role": "main", "score": 78}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:56:36.223085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c35dedc10b33953801371743f00335b0308d5e5161213952a91320dd43db62", "fetched_at": "2026-08-28T04:05:06.087620+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ShenSeanChen/waku-agent"}, {"content_hash": "43515c4050a2a200bd213c042b8c2a6937e3d26d6bb1d41b9c1570bae6c738ca", "fetched_at": "2026-08-29T11:26:56.556263+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/waku-agent/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:56:36.223085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c35dedc10b33953801371743f00335b0308d5e5161213952a91320dd43db62", "fetched_at": "2026-08-28T04:05:06.087620+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ShenSeanChen/waku-agent"}, {"content_hash": "43515c4050a2a200bd213c042b8c2a6937e3d26d6bb1d41b9c1570bae6c738ca", "fetched_at": "2026-08-29T11:26:56.556263+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/waku-agent/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:56:36.223085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c35dedc10b33953801371743f00335b0308d5e5161213952a91320dd43db62", "fetched_at": "2026-08-28T04:05:06.087620+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ShenSeanChen/waku-agent"}, {"content_hash": "43515c4050a2a200bd213c042b8c2a6937e3d26d6bb1d41b9c1570bae6c738ca", "fetched_at": "2026-08-29T11:26:56.556263+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/waku-agent/json"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:56:36.223085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c35dedc10b33953801371743f00335b0308d5e5161213952a91320dd43db62", "fetched_at": "2026-08-28T04:05:06.087620+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ShenSeanChen/waku-agent"}, {"content_hash": "43515c4050a2a200bd213c042b8c2a6937e3d26d6bb1d41b9c1570bae6c738ca", "fetched_at": "2026-08-29T11:26:56.556263+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/waku-agent/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:56:36.223085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c35dedc10b33953801371743f00335b0308d5e5161213952a91320dd43db62", "fetched_at": "2026-08-28T04:05:06.087620+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ShenSeanChen/waku-agent"}, {"content_hash": "43515c4050a2a200bd213c042b8c2a6937e3d26d6bb1d41b9c1570bae6c738ca", "fetched_at": "2026-08-29T11:26:56.556263+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/waku-agent/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:56:36.223085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c35dedc10b33953801371743f00335b0308d5e5161213952a91320dd43db62", "fetched_at": "2026-08-28T04:05:06.087620+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ShenSeanChen/waku-agent"}, {"content_hash": "43515c4050a2a200bd213c042b8c2a6937e3d26d6bb1d41b9c1570bae6c738ca", "fetched_at": "2026-08-29T11:26:56.556263+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/waku-agent/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:06.087620+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:56:36.223085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c35dedc10b33953801371743f00335b0308d5e5161213952a91320dd43db62", "fetched_at": "2026-08-28T04:05:06.087620+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ShenSeanChen/waku-agent"}, {"content_hash": "43515c4050a2a200bd213c042b8c2a6937e3d26d6bb1d41b9c1570bae6c738ca", "fetched_at": "2026-08-29T11:26:56.556263+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/waku-agent/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:56:36.223085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c35dedc10b33953801371743f00335b0308d5e5161213952a91320dd43db62", "fetched_at": "2026-08-28T04:05:06.087620+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ShenSeanChen/waku-agent"}, {"content_hash": "43515c4050a2a200bd213c042b8c2a6937e3d26d6bb1d41b9c1570bae6c738ca", "fetched_at": "2026-08-29T11:26:56.556263+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/waku-agent/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:56:36.223085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c35dedc10b33953801371743f00335b0308d5e5161213952a91320dd43db62", "fetched_at": "2026-08-28T04:05:06.087620+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ShenSeanChen/waku-agent"}, {"content_hash": "43515c4050a2a200bd213c042b8c2a6937e3d26d6bb1d41b9c1570bae6c738ca", "fetched_at": "2026-08-29T11:26:56.556263+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/waku-agent/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:56:36.223085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c35dedc10b33953801371743f00335b0308d5e5161213952a91320dd43db62", "fetched_at": "2026-08-28T04:05:06.087620+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ShenSeanChen/waku-agent"}, {"content_hash": "43515c4050a2a200bd213c042b8c2a6937e3d26d6bb1d41b9c1570bae6c738ca", "fetched_at": "2026-08-29T11:26:56.556263+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/waku-agent/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 3, "rhythm": 95}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 54, "days_push": 17, "days_rel": 33, "gap_med": 4, "n_releases_24m": 2}, "score": 78, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}