{"id":50216374,"url":"https://github.com/rogerchappel/contextloom","last_synced_at":"2026-05-26T09:04:35.189Z","repository":{"id":355931400,"uuid":"1228284468","full_name":"rogerchappel/contextloom","owner":"rogerchappel","description":"Local-first context manager for lossless agent transcripts with cited chunks","archived":false,"fork":false,"pushed_at":"2026-05-05T21:31:18.000Z","size":43,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-05T23:25:27.143Z","etag":null,"topics":["agent-context","agent-tools","cli","local-first","retrieval","transcripts","typescript"],"latest_commit_sha":null,"homepage":"https://github.com/rogerchappel/contextloom","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/rogerchappel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","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-05-03T20:43:40.000Z","updated_at":"2026-05-05T21:31:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rogerchappel/contextloom","commit_stats":null,"previous_names":["rogerchappel/contextloom"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rogerchappel/contextloom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerchappel%2Fcontextloom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerchappel%2Fcontextloom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerchappel%2Fcontextloom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerchappel%2Fcontextloom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rogerchappel","download_url":"https://codeload.github.com/rogerchappel/contextloom/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rogerchappel%2Fcontextloom/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33512346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T03:12:49.672Z","status":"ssl_error","status_checked_at":"2026-05-26T03:12:47.976Z","response_time":63,"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":["agent-context","agent-tools","cli","local-first","retrieval","transcripts","typescript"],"created_at":"2026-05-26T09:04:18.772Z","updated_at":"2026-05-26T09:04:35.179Z","avatar_url":"https://github.com/rogerchappel.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# contextloom\n\nA local-first context manager for agent sessions. It turns transcripts, notes, and tool traces into a deterministic manifest of retrievable chunks with citations back to exact files, line ranges, byte offsets, and hashes.\n\nThink of it as a small loom for long context: feed it local files, get back a plain JSON index another agent, CLI, or editor plugin can trust.\n\n## Why\n\nAgent work often lives in long chat logs and noisy tool output. Summaries are useful, but they can lose the exact quote that proves a decision. `contextloom` keeps the original thread recoverable while making chunks easy to search and cite.\n\n## Install\n\n```sh\nnpm install\nnpm run build\n```\n\nFor local CLI use while developing:\n\n```sh\nnode dist/src/cli.js --help\n```\n\nWhen installed from npm in the future, the binary name is `contextloom`.\n\n## Quickstart\n\n```sh\nnpm run build\nnode dist/src/cli.js inspect fixtures/sample --output out/sample\nnode dist/src/cli.js search out/sample/manifest.json \"deployment decision\"\nnode dist/src/cli.js show out/sample/manifest.json chunk-0001\nnode dist/src/cli.js verify out/sample/manifest.json\n```\n\n`inspect` writes:\n\n- `manifest.json` — machine-readable chunks, citations, hashes, and stats.\n- `manifest.md` — a human skim table.\n\n## CLI\n\n```text\ncontextloom inspect \u003cinput\u003e [--output out/context] [--format json|markdown]\ncontextloom search \u003cmanifest.json\u003e \u003cquery\u003e [--limit 5] [--format json|markdown]\ncontextloom show \u003cmanifest.json\u003e \u003cchunk-id-or-hash\u003e [--format json|markdown]\ncontextloom verify \u003cmanifest.json\u003e [--format json|markdown]\n```\n\nSupported local input formats in the MVP:\n\n- `.jsonl` transcript/event rows with `role`, `content`/`text`/`message`, and optional `timestamp`.\n- `.json` arrays or objects containing `messages`, `turns`, `events`, or `transcript`.\n- `.md`, `.markdown`, and `.txt` notes/logs.\n\n## Library API\n\n```ts\nimport { inspect, searchManifest, verifyManifest } from 'contextloom';\n\nconst manifest = await inspect({ input: 'fixtures/sample', output: 'out/sample' });\nconst results = searchManifest(manifest, 'deployment decision', 3);\nconst verified = await verifyManifest(manifest);\n```\n\n## Safety boundaries\n\n`contextloom` is intentionally boring and local-first:\n\n- Reads only files or directories you explicitly pass in.\n- Writes only the output directory you request.\n- Performs no telemetry, network calls, scraping, publishing, or credential access.\n- Uses deterministic chunk ids and source hashes so generated manifests are easy to diff.\n\nDo not point it at private transcripts unless you are comfortable with the output manifest containing excerpts from those files.\n\n## Source attribution\n\nThis is an original implementation inspired by the product idea described in `docs/PRD.md`, which mentions the adjacent `lossless-claw` repository as inspiration. This project does not copy that name or implementation; it focuses on a tiny deterministic TypeScript CLI/library MVP.\n\n## Verify\n\n```sh\nnpm test\nnpm run check\nnpm run build\nnpm run smoke\nbash scripts/validate.sh\n```\n\n## Examples\n\nSee [`examples/basic-usage.md`](examples/basic-usage.md), [`examples/library-api.ts`](examples/library-api.ts), and [`fixtures/sample`](fixtures/sample) for a small agent handoff workflow.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md). Keep changes local-first, small, tested, and clear about safety implications.\n\n## Security\n\nSee [SECURITY.md](SECURITY.md). Please do not put private transcript excerpts or exploit details in public issues.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frogerchappel%2Fcontextloom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frogerchappel%2Fcontextloom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frogerchappel%2Fcontextloom/lists"}