{"id":49117087,"url":"https://github.com/justinli6886/synapse-runner","last_synced_at":"2026-04-26T07:01:42.818Z","repository":{"id":339284433,"uuid":"1158839572","full_name":"JustinLi6886/synapse-runner","owner":"JustinLi6886","description":"Train small neural nets built from scratch in TypeScript on a browser runner—imitation learning, actor–critic policy gradients, and evolution strategies—with React and live metrics; one game loop, client-side.","archived":false,"fork":false,"pushed_at":"2026-04-21T06:21:48.000Z","size":3162,"stargazers_count":0,"open_issues_count":12,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T08:41:01.740Z","etag":null,"topics":["behavioral-cloning","evolutionary-algorithm","from-scratch","game-development","machine-learning","neural-network","react","reinforcement-learning","typescript","vite"],"latest_commit_sha":null,"homepage":"https://www.synapserunner.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JustinLi6886.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-16T01:23:21.000Z","updated_at":"2026-04-21T06:19:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/JustinLi6886/synapse-runner","commit_stats":null,"previous_names":["justinli6886/synapse-runner"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/JustinLi6886/synapse-runner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JustinLi6886%2Fsynapse-runner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JustinLi6886%2Fsynapse-runner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JustinLi6886%2Fsynapse-runner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JustinLi6886%2Fsynapse-runner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JustinLi6886","download_url":"https://codeload.github.com/JustinLi6886/synapse-runner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JustinLi6886%2Fsynapse-runner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32288653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T06:26:00.361Z","status":"ssl_error","status_checked_at":"2026-04-26T06:25:58.791Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["behavioral-cloning","evolutionary-algorithm","from-scratch","game-development","machine-learning","neural-network","react","reinforcement-learning","typescript","vite"],"created_at":"2026-04-21T08:05:38.473Z","updated_at":"2026-04-26T07:01:42.813Z","avatar_url":"https://github.com/JustinLi6886.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Synapse Runner\n\n[![CI](https://github.com/JustinLi6886/synapse-runner/actions/workflows/ci.yml/badge.svg)](https://github.com/JustinLi6886/synapse-runner/actions/workflows/ci.yml)\n\n![Synapse Runner — imitation learning mode](docs/readme-screenshot.png)\n\n*Screenshot: **Imitation learning** — record demos, train behavioral cloning, inspect metrics.*\n\n**Live:** [synapserunner.com](https://www.synapserunner.com/) · **Repo:** [github.com/JustinLi6886/synapse-runner](https://github.com/JustinLi6886/synapse-runner) · **Current release:** `v2.3.1`\n\nA browser runner where the point isn’t flashy graphics—it’s an end-to-end **play → observe → train** loop in TypeScript. One game engine drives human control, recorded demos, and learning, all without a backend for the core experience.\n\n**At a glance (resume-friendly):** React, Vite, custom side-scroller simulation, small neural nets implemented in TS (forward passes, losses, policy-gradient and evolution updates), persisted settings/models in `localStorage`, and live training metrics in the UI.\n\n---\n\n## Why it exists\n\nI wanted a project where “it runs in the game” isn’t hand-wavy: observations come from real state, and the nets either clear obstacles or they don’t. The dashboard is busy on purpose—thresholds, vectors, and charts—so you can see whether training is doing something useful.\n\n---\n\n## Modes\n\n| Mode | What you do |\n|------|----------------|\n| **Human** | Play with keyboard or tap; the reference behavior. |\n| **Imitation** | Record frames, behavioral cloning on your data, export/import datasets. |\n| **Policy gradient** | Actor–critic rollouts, GAE-style advantages, greedy eval, charts. |\n| **Evolution** | Population fitness, mutation, generations. |\n\n---\n\n## Stack\n\n| Layer | Notes |\n|--------|--------|\n| **UI** | React 19, Tailwind CSS 4, Recharts, Lucide icons |\n| **Build** | Vite 7, TypeScript ~5.9, ESLint |\n| **ML** | Feedforward nets in TS—e.g. BCE/MSE training, policy-gradient updates |\n| **State** | `localStorage` persistence, sanitized imports |\n\n---\n\n## Run locally\n\n**Node 20+** (see `engines` in `package.json`).\n\n```bash\nnpm install\nnpm run dev\n```\n\nOpen the URL Vite prints (this project defaults to port **3000**).\n\n```bash\nnpm run build    # typecheck + production bundle\nnpm run lint\nnpm run preview  # optional: serve the production build locally\n```\n\n---\n\n## License\n\n[MIT](./LICENSE) — Copyright (c) 2026 Justin Junze Li.\n\nFeedback and bug reports are welcome via GitHub issues.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustinli6886%2Fsynapse-runner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjustinli6886%2Fsynapse-runner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustinli6886%2Fsynapse-runner/lists"}