{"id":50960657,"url":"https://github.com/thefrontside/inspector","last_synced_at":"2026-06-18T13:32:44.093Z","repository":{"id":338123950,"uuid":"1156573467","full_name":"thefrontside/inspector","owner":"thefrontside","description":"Observability and Debugging for Structured Programs","archived":false,"fork":false,"pushed_at":"2026-04-21T14:51:36.000Z","size":487,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-15T03:46:58.990Z","etag":null,"topics":["debug","effection","inspector"],"latest_commit_sha":null,"homepage":"","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/thefrontside.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-12T20:00:13.000Z","updated_at":"2026-03-24T16:29:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/thefrontside/inspector","commit_stats":null,"previous_names":["thefrontside/inspector"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thefrontside/inspector","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thefrontside%2Finspector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thefrontside%2Finspector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thefrontside%2Finspector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thefrontside%2Finspector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thefrontside","download_url":"https://codeload.github.com/thefrontside/inspector/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thefrontside%2Finspector/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34493361,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["debug","effection","inspector"],"created_at":"2026-06-18T13:32:41.519Z","updated_at":"2026-06-18T13:32:44.069Z","avatar_url":"https://github.com/thefrontside.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# inspector\n\nHelpers to inspect an effection tree. These utilities can be used through `npx` or similar or installed as a dev dependency.\n\n## Running\n\nWhen the package is installed as a dev dependency the binary is available in\n`node_modules/.bin/inspector`; you can also invoke it directly with npx:\n\n```bash\nnpx @effectionx/inspector [options] \u003ccommand\u003e [args]\n# or when installed as a dev dependency\ninspector [options] \u003ccommand\u003e [args]\n```\n\nUse `npx @effectionx/inspector help` to explore available commands. Typically you will run to inspector in \"live\" mode or \"record\" more.\n\nUnder the hood the CLI chooses which binary to execute based on the `--runtime` option or, if you omit that, it will guess from the process that started the CLI, either `node`, `deno`, or `bun`.\n\nThese raw `call` commands mirror the behaviour of the HTTP routes produced by the same code that powers the SSE server (see `lib/sse-server.ts`).\n\n### Live\n\nStart your application with the inspector loader so it runs alongside your app.\n\n```shell\n# generate a recording, but also pause\ninspector --inspect-pause --experimental-strip-types program.ts\n```\n\nWhen started directly with the loader, the inspector will launch a small SSE server (default port: 41000) and serve the UI at `http://localhost:41000`. You will need to \"play\" or continue execution of your program when you use `--inspect-pause`. This gives you time to load the UI, and press the play button or issue the \"play\" call, e.g. `npx @effectionx/inspector call play`.\n\n### Recording ✅\n\nThe UI supports loading saved recordings useful for review and sharing. From the Home screen click `Load Recording` \u003e `Browse files` and choose the `.json` or `.effection` file. A recording is a JSON array of NodeMap snapshots. The inspector accepts `.json` and `.effection` files.\n\n#### Creating a recording from a live session:\n\nYou can capture the SSE stream from a running inspector and save the emitted data. It is run similarly with an additional `--inspect-record` argument.\n\n```shell\n# generate a recording, but also pause\ninspector --inspect-record=output.json --experimental-strip-types program.ts\n```\n\nIf you started the inspected process with `--inspect-pause`, click the play button or issue the \"play\" call, e.g. `npx @effectionx/inspector call play`.\n\n## CLI Examples\n\n```bash\n# query the default server\ninspector call getScopes\n\n# record output\ninspector call watchScopes --out=events.json\n\n# use the alias\ninspector c recordNodeMap\n\n# inspect and run a script (node assumed by default)\ninspector program.js\n\n# override runtime explicitly\ninspector --runtime deno --inspect-pause program.ts\n# or when using bun:\ninspector --runtime bun program.js\n\n# pass through runtime flags\ninspector --experimental-strip-types program.ts\ninspector --import=tsx program.ts\n\n# generate a recording, but also pause\ninspector --inspect-pause --inspect-record=recording.inspector.json --import=tsx program.ts\n# generate a recording, but begin execution immediately\ninspector --inspect-record=recording.inspector.json --import=tsx program.ts\n```\n\nPause behaviour is communicated to the loader via the `INSPECT_PAUSE` environment variable, and using `--inspect-pause` sets that for you. When running the program with the CLI, the program is run through the loader with the environment variable passed, e.g.:\n\n```bash\nINSPECT_PAUSE=1 node --import @effectionx/inspector ./your-app.js\n```\n\n## Contributing\n\nSee [the Contributing Guide](CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthefrontside%2Finspector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthefrontside%2Finspector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthefrontside%2Finspector/lists"}