{"adoption": {"forks": 669, "observed_at": "2026-08-28T04:08:53.326588+00:00", "stars": 4552}, "canonical_url": "https://ross.abutalabs.com/products/ai-agents-from-scratch", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Demystify AI agents by building them yourself. Local LLMs, no black boxes, real understanding of function calling, memory, and ReAct patterns.", "domain": ["artificial-intelligence", "large-language-models", "tutorials", "education"], "enriched": true, "function": ["agent-framework", "llm-inference", "prompt-engineering", "developer-tools"], "health_score": 76, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["pguso/ai-agents-from-scratch"], "name": "pguso/ai-agents-from-scratch", "platform": ["cross-platform"], "pushed_at": "2026-07-24T15:40:39+00:00", "repo": "pguso/ai-agents-from-scratch", "stars": 4552, "tags": ["local-llm", "node-llama-cpp", "react-pattern", "function-calling", "hands-on-tutorial", "no-framework", "ai-agents", "nodejs"], "topics": ["ai-agents", "educational", "function-calling", "llm", "llm-agent", "node-llama-cpp", "react-agent", "tutorial"], "urls": [], "use_cases": ["learn how ai agents work under the hood", "build an ai agent without frameworks", "understand function calling with local llms", "implement the react agent pattern from scratch", "run llm agents locally with node-llama-cpp", "tutorial on agent memory and tool use", "understand agent architectures before using langchain"], "what_it_is": "An educational repository teaching how to build AI agents from first principles using local LLMs and node-llama-cpp in JavaScript. It provides a progressive series of runnable examples covering LLM basics, system prompts, function calling, memory, and ReAct patterns without frameworks.", "when_to_avoid": ["you need a production-ready agent framework with batteries included", "you want hosted LLM integrations and managed infrastructure", "you need Python tooling (though a companion Python repo exists)", "you lack the hardware to run local LLMs (8GB+ RAM required)"], "when_to_choose": ["you want deep conceptual understanding of agent internals rather than a production framework", "you prefer learning by running and modifying small code examples", "you want to use local models for privacy or cost reasons", "you are a JavaScript/Node.js developer new to AI agents"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ai-agents-from-scratch", "repo": "pguso/ai-agents-from-scratch", "role": "main", "score": 59}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.326588+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:20:03.939177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55343527f7c84e3fa655b325023886d55a3f840d9c030e4e712be6edf3e3aaab", "fetched_at": "2026-08-28T04:08:53.326588+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pguso/ai-agents-from-scratch"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.326588+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:20:03.939177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55343527f7c84e3fa655b325023886d55a3f840d9c030e4e712be6edf3e3aaab", "fetched_at": "2026-08-28T04:08:53.326588+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pguso/ai-agents-from-scratch"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:20:03.939177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55343527f7c84e3fa655b325023886d55a3f840d9c030e4e712be6edf3e3aaab", "fetched_at": "2026-08-28T04:08:53.326588+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pguso/ai-agents-from-scratch"}], "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:08:53.326588+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.326588+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.326588+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:20:03.939177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55343527f7c84e3fa655b325023886d55a3f840d9c030e4e712be6edf3e3aaab", "fetched_at": "2026-08-28T04:08:53.326588+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pguso/ai-agents-from-scratch"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.326588+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.326588+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:20:03.939177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55343527f7c84e3fa655b325023886d55a3f840d9c030e4e712be6edf3e3aaab", "fetched_at": "2026-08-28T04:08:53.326588+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pguso/ai-agents-from-scratch"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.326588+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.326588+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.326588+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:20:03.939177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55343527f7c84e3fa655b325023886d55a3f840d9c030e4e712be6edf3e3aaab", "fetched_at": "2026-08-28T04:08:53.326588+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pguso/ai-agents-from-scratch"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.326588+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:53.326588+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:20:03.939177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55343527f7c84e3fa655b325023886d55a3f840d9c030e4e712be6edf3e3aaab", "fetched_at": "2026-08-28T04:08:53.326588+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pguso/ai-agents-from-scratch"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:20:03.939177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55343527f7c84e3fa655b325023886d55a3f840d9c030e4e712be6edf3e3aaab", "fetched_at": "2026-08-28T04:08:53.326588+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pguso/ai-agents-from-scratch"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:20:03.939177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55343527f7c84e3fa655b325023886d55a3f840d9c030e4e712be6edf3e3aaab", "fetched_at": "2026-08-28T04:08:53.326588+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pguso/ai-agents-from-scratch"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:20:03.939177+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55343527f7c84e3fa655b325023886d55a3f840d9c030e4e712be6edf3e3aaab", "fetched_at": "2026-08-28T04:08:53.326588+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pguso/ai-agents-from-scratch"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 94, "longevity": 22, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 314, "days_push": 40, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 59, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}