{"_id":"@adrrr/tarmac","_rev":"14-3d3d56c4e9e24dfa9927e9166f3c9816","name":"@adrrr/tarmac","dist-tags":{"latest":"0.10.0"},"versions":{"0.1.0":{"name":"@adrrr/tarmac","version":"0.1.0","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"Adrien Leboeuf"},"license":"MIT","_id":"@adrrr/tarmac@0.1.0","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"73eb50013d4f991422c2f2f5f4ed39766ea67300","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.1.0.tgz","fileCount":21,"integrity":"sha512-DaPm5Gh8Ln2oPIKgscZ4/mAvrPq4mY070yTmCSwUx8QaXorvhff1jtCJkBrTxLj6x10e+F7NDwTw5rwxozZLCA==","signatures":[{"sig":"MEQCID/o4I0eunTDjlJnWNuCCOdk8WMhHNBse3e874Ix3cz8AiBy6zJNcvn0ZQ0ury3YHGa18MnKYZzVFqbOMtn/ZyiZhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130014},"type":"module","engines":{"node":">=20"},"gitHead":"0049a59b876833a566a86480a2ad040f3e36119f","scripts":{"test":"npm run typecheck && node --test \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"_npmVersion":"10.9.4","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.1.0_1786288365594_0.6703955268806066","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@adrrr/tarmac","version":"0.1.1","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"Adrien Leboeuf"},"license":"MIT","_id":"@adrrr/tarmac@0.1.1","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"4a0af9946b27537a2724f7aebec22d4c4b0a751d","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.1.1.tgz","fileCount":21,"integrity":"sha512-ccZKcM1nC2v+a3FSpQx5OsoqI/8YhPlrvw1TSsWsw4YzQMkN8ZFMoTx1K0dT3QkKtFnt07E6D7k8ETaoiAConw==","signatures":[{"sig":"MEUCICt+61LeSYvx26Do2M0OLEQUrA5tP7Xt/Yp6mFFPMUrAAiEAi9sx0H+1Mgj/PWTHvmVJMFGWRpphAG/SzoNwj/wl3J4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131254},"type":"module","engines":{"node":">=20"},"gitHead":"155c256239295fb4891f1d86de5163e7b105cd29","scripts":{"test":"npm run typecheck && node --test \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"_npmVersion":"10.9.4","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.1.1_1786359490291_0.6400034958732537","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@adrrr/tarmac","version":"0.1.2","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"Adrien Leboeuf"},"license":"MIT","_id":"@adrrr/tarmac@0.1.2","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"f854f13706e4ab67b7cafbda128abe8ff4590750","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.1.2.tgz","fileCount":21,"integrity":"sha512-k6oYf9Gq5dpfq5jJS0OhgjaprA3mszD+ARfkF00gxhAGjMlAg22yA3dVO30UMl31iplnwo5XWDlIMK8rAPvgrQ==","signatures":[{"sig":"MEUCIDZls2X81mvMgb+L05uSYxvtAJhimTyB7yBSanICcTmgAiEAqxtqKchceR7pRKTXxJPNHt8IczIktN3DxJDWuPubtU0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137432},"type":"module","engines":{"node":">=20"},"gitHead":"7a5ad4c0f7ee6c11d20bc71ac507f4046d5137e6","scripts":{"test":"npm run typecheck && node --test \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"_npmVersion":"10.9.4","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.1.2_1786616188921_0.9999646890275706","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@adrrr/tarmac","version":"0.2.0","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"Adrien Leboeuf"},"license":"MIT","_id":"@adrrr/tarmac@0.2.0","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"homepage":"https://github.com/adrrr/tarmac#readme","bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"a2538784c5399a46a7e18f27969fe4917dd14441","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.2.0.tgz","fileCount":21,"integrity":"sha512-+tmqEj8XqiqRkadWYz2aSMzAO1eo3I0mJ6CNYiCSRgFGNg2I8Yw8V9iD1HjE8S282Xyl6DVhU3cctzkE1J49Ug==","signatures":[{"sig":"MEQCIH9CI6SyVwGgETbReV0lPgaRFgUHAaxP2fCkwuSVB26NAiBTVTFReYdiezOQn8bzZYQNtm//jRW2xNe1q3cFhOykOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158642},"type":"module","engines":{"node":">=20"},"gitHead":"697c49a3f8a0b37b2a7ac84c7a9d86a33409c76a","scripts":{"test":"npm run typecheck && node --test \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"repository":{"url":"git+https://github.com/adrrr/tarmac.git","type":"git"},"_npmVersion":"10.9.4","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.2.0_1786701635793_0.9944396695859183","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@adrrr/tarmac","version":"0.3.0","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"Adrien Leboeuf"},"license":"MIT","_id":"@adrrr/tarmac@0.3.0","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"homepage":"https://github.com/adrrr/tarmac#readme","bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"f5a1bd148c9f33a79958ef72f8c52f17dfa990b7","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.3.0.tgz","fileCount":22,"integrity":"sha512-IvsqWIGf3ZQILqQ+dhobzd458z9w3YSBMMeP1687dDJqsvlPxzYIuMAjph4Ctlsab2hrVjdCCBYZa3CED+22CA==","signatures":[{"sig":"MEQCICtfavmKyL8ge1ag3oqFAyqIQMzXsEDQax1qHhGLdeH6AiBHVzqdtRm1YxLEj35Und4bdnrxRgmziHi2/FsOSePfkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":196748},"type":"module","engines":{"node":">=20"},"gitHead":"ade033f342607b0550c44eea88c726c377b5860c","scripts":{"test":"npm run typecheck && node --test \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"repository":{"url":"git+https://github.com/adrrr/tarmac.git","type":"git"},"_npmVersion":"10.9.4","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.3.0_1786868343486_0.8530028022390321","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@adrrr/tarmac","version":"0.4.0","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"Adrien Leboeuf"},"license":"MIT","_id":"@adrrr/tarmac@0.4.0","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"homepage":"https://github.com/adrrr/tarmac#readme","bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"442f9f5ff061ab92da6acbb7c62510271d31ede9","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.4.0.tgz","fileCount":24,"integrity":"sha512-7wgckKY8vX+PB0Grhj8stNw7WqwnmLTAauiKs+SmwSeumbwvCozIs3iK075rnOxLiFvo94wMjWw/79gTw1mwqg==","signatures":[{"sig":"MEYCIQDsfZbn3k6c2gQQEhkYKeWUFe8UOBV2dTkCHbH45LdHGQIhAJwiGrQHNDa2FiUbCGBrhkhDRZKvOuisNRjVew35Cv/M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":249329},"type":"module","engines":{"node":">=20"},"gitHead":"27c47e6bbbdc8b7a6fa2a706e011f82a5682d151","scripts":{"test":"npm run typecheck && node --test --test-timeout=120000 --test-force-exit \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"repository":{"url":"git+https://github.com/adrrr/tarmac.git","type":"git"},"_npmVersion":"10.9.4","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.4.0_1786986638195_0.8827376221491663","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@adrrr/tarmac","version":"0.4.1","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"Adrien Leboeuf"},"license":"MIT","_id":"@adrrr/tarmac@0.4.1","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"homepage":"https://github.com/adrrr/tarmac#readme","bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"e7da4714440bedda197a7d7f2be57fd6b00a92c8","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.4.1.tgz","fileCount":24,"integrity":"sha512-hRLnS7utG69sv+IY7/03dsmhlObN4aP/0HLdqldZynWayZ3ryhTG2ex5eEI43kYrw4EQ9wVevJGjpATV7aABTA==","signatures":[{"sig":"MEYCIQCdsj3mqQqtchkNcak4lUKSZPnzNef3TNug4/9YuePOjAIhAMY4+53ltTuRGo7GVJ+cjq6b28NkD+tmuc0i9H+nppDv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":254612},"type":"module","engines":{"node":">=20"},"gitHead":"15588fe4a4d0060bb03358c23383f262a9f45255","scripts":{"test":"npm run typecheck && node --test --test-timeout=120000 \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"repository":{"url":"git+https://github.com/adrrr/tarmac.git","type":"git"},"_npmVersion":"10.9.4","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.4.1_1787050051292_0.5217516849824433","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@adrrr/tarmac","version":"0.5.0","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"Adrien Leboeuf"},"license":"MIT","_id":"@adrrr/tarmac@0.5.0","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"homepage":"https://github.com/adrrr/tarmac#readme","bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"12baca9019f1bb706fc0b0d416ccc4fa014a1168","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.5.0.tgz","fileCount":24,"integrity":"sha512-vHbGNLMpFWzwzt/+hqH0fzP5EVBzkIrOleE0rgf+iUmdphMyM4FlDSrfkWOp5htkI/3FTjnJOj9No3fGwQaxSQ==","signatures":[{"sig":"MEYCIQDnQTyzphWC7MrgwXG3lA2Psomc9dyYcPzkeucit3lP3wIhAJRlcOYUpOLYR1LRs02WwriW4UNQHhocsSncmInxXo11","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272024},"type":"module","engines":{"node":">=20"},"gitHead":"65c050b80d493f1fdb6e7c709071f7107515b0c8","scripts":{"test":"npm run typecheck && node --test --test-timeout=120000 \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"repository":{"url":"git+https://github.com/adrrr/tarmac.git","type":"git"},"_npmVersion":"10.9.4","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.5.0_1787155221185_0.7922391909661342","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@adrrr/tarmac","version":"0.6.0","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"Adrien Leboeuf"},"license":"MIT","_id":"@adrrr/tarmac@0.6.0","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"homepage":"https://github.com/adrrr/tarmac#readme","bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"3b9c536a7e57c7b53e47fbfb8395cd7bc5ad0ef8","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.6.0.tgz","fileCount":24,"integrity":"sha512-lpAwQJF0ArWBbGgC0WUd4XbA6caur04NRjW7WFb4qLFjMEn2DesALToSmeXvPnTw2wPRoWJSEQngLLQc+ALcBg==","signatures":[{"sig":"MEUCIQCnZHWRhiJS2hyxB1PPYBR/bMiH83zC6d2bVj+wAi/84QIgYuo3T1CItD9TIGuFoJIV//95BniR47UGLD1WdugxAQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":309667},"type":"module","engines":{"node":">=20"},"gitHead":"0ec0042a6bdea6450979227c82f1f1529a6fb1b7","scripts":{"test":"npm run typecheck && node --test --test-timeout=120000 \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"repository":{"url":"git+https://github.com/adrrr/tarmac.git","type":"git"},"_npmVersion":"11.17.0","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.6.0_1787489217751_0.3008391705143094","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@adrrr/tarmac","version":"0.7.0","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"Adrien Leboeuf"},"license":"MIT","_id":"@adrrr/tarmac@0.7.0","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"homepage":"https://github.com/adrrr/tarmac#readme","bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"e5c9908c05c7abc75c79652f3d5fccf56aac9795","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.7.0.tgz","fileCount":24,"integrity":"sha512-NcrTXuLdqmDxhiNVykDgTbDyZpril1tGF9u/nnwaX7coQz/xz21OKGg/hS5kQJ7ByOybzm7XJPZ61PPzAT/RSw==","signatures":[{"sig":"MEUCIQDJlDdfct+xdXUqqTc0kUNep7E2kMtfj9J683T5iIcO+gIgfUJLnIg4uqN0/N9DJSuH/p6pl/+ALD6Vm0EyYdBA3/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":313331},"type":"module","engines":{"node":">=20"},"gitHead":"3644ff37e632fbcb96f3d5a13b447d6ffe76b9bb","scripts":{"test":"npm run typecheck && node --test --test-timeout=120000 \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"repository":{"url":"git+https://github.com/adrrr/tarmac.git","type":"git"},"_npmVersion":"11.17.0","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.7.0_1787813520033_0.3830876611762106","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@adrrr/tarmac","version":"0.8.0","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"Adrien Leboeuf"},"license":"MIT","_id":"@adrrr/tarmac@0.8.0","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"homepage":"https://github.com/adrrr/tarmac#readme","bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"6a3ac30a08b621c4c6638314d95cc35a2d3c2be7","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.8.0.tgz","fileCount":27,"integrity":"sha512-PMPF5NlRCpNNe2nPU5MKpc/naOGiCoblkKRyJeB6uH6Xe6wiTQ0Ogh//3vtlnvzdTWRvKyCOegWhjpL89QYS8A==","signatures":[{"sig":"MEUCIFvw9YTZpRvxWV46PYsR5SDqw+Xkxheixya4GPCeoHn1AiEAjwSl52/4xmSkEy99Orlj/271cFdVuIfZUv5YI9PhZrI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":440348},"type":"module","engines":{"node":">=20"},"gitHead":"2e4e25d2d6544165f69d5f5fb75adcf8dc5b9c98","scripts":{"test":"npm run typecheck && node --test --test-timeout=120000 \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"repository":{"url":"git+https://github.com/adrrr/tarmac.git","type":"git"},"_npmVersion":"11.17.0","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.8.0_1788009964577_0.7118489882114094","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@adrrr/tarmac","version":"0.8.1","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"adrrr"},"license":"MIT","_id":"@adrrr/tarmac@0.8.1","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"homepage":"https://github.com/adrrr/tarmac#readme","bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"bdd04415ea3eb908432d59d7a7f842d35a94ad45","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.8.1.tgz","fileCount":27,"integrity":"sha512-tjPWS+gJx7Xaa21pi3FWLaXelQH2MsJ7HMgFoG0lOfDt1dP1JnQsHl7R+rgkHU+AhTNEIeqVQmvRhzO8ayOB3A==","signatures":[{"sig":"MEYCIQDOC0SpkSvcKVRXLhbYenlob7FcR48qqkZZ1c2MVLesOQIhANU4uURyxwdVxj+6H4xUCHpVbejFgjIdCE8bIY7Xvx4S","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":440330},"type":"module","engines":{"node":">=20"},"gitHead":"c42c4ea0ab4e75dffc22a00c15d10ab12ce7df37","scripts":{"test":"npm run typecheck && node --test --test-timeout=120000 \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"repository":{"url":"git+https://github.com/adrrr/tarmac.git","type":"git"},"_npmVersion":"11.17.0","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.8.1_1788102469538_0.3840484214441675","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@adrrr/tarmac","version":"0.9.0","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"author":{"name":"adrrr"},"license":"MIT","_id":"@adrrr/tarmac@0.9.0","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"homepage":"https://github.com/adrrr/tarmac#readme","bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"bin":{"tarmac":"dist/cli.js"},"dist":{"shasum":"3cff939075ed1ae31d3afeea0c3f241d0b97e1af","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.9.0.tgz","fileCount":29,"integrity":"sha512-LEhAl5rH4WGbZg0zOVfwReXoXxoupnk2+MgOPxIGNUOwU8sXvagahW6VBrHVHmhBMFzyRcbxNDwcRD/OY+26bA==","signatures":[{"sig":"MEYCIQC3fk4zUTWPBIjbLkCkCUs4EDbcfBVCGJvMPpNZ03YRoAIhAKZVumxbTo1kS7BB5OYqHuaFmrzjxlZN6YSzqH6ym+/Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":491632},"type":"module","engines":{"node":">=20"},"gitHead":"ae6e00b13eca0f65d3cbf72a1e49d06f2853e401","scripts":{"test":"npm run typecheck && node --test --test-timeout=120000 \"test/*.test.ts\"","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","prepack":"npm run build","typecheck":"tsc -p tsconfig.json","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null","fixtures:capture":"node scripts/capture-fixtures.ts"},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"repository":{"url":"git+https://github.com/adrrr/tarmac.git","type":"git"},"_npmVersion":"11.17.0","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","directories":{},"_nodeVersion":"24.19.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"7.0.2","@types/node":"26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tarmac_0.9.0_1788689472132_0.11377658725759843","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@adrrr/tarmac","version":"0.10.0","description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"license":"MIT","author":{"name":"adrrr"},"repository":{"type":"git","url":"git+https://github.com/adrrr/tarmac.git"},"homepage":"https://github.com/adrrr/tarmac#readme","bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"type":"module","engines":{"node":">=20"},"bin":{"tarmac":"dist/cli.js"},"scripts":{"clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build":"npm run clean && tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json","test":"npm run typecheck && node --test --test-timeout=120000 \"test/*.test.ts\"","fixtures:capture":"node scripts/capture-fixtures.ts","prepack":"npm run build","prepublishOnly":"npm run build && TARMAC_REQUIRE_DASH=1 npm test && node dist/cli.js --help > /dev/null"},"devDependencies":{"@types/node":"26.2.0","typescript":"7.0.2"},"gitHead":"8253f74f3c1b78b894d10e69ff8530b74cddfa22","_id":"@adrrr/tarmac@0.10.0","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-JF3pFOzBcKcosNjFqYY7apZegCh2+rEcXgxnmbrJSCGM4B5JGV8kCf3/aZbKSd6VVUZ5GFuxs45+AMnTyBCFhQ==","shasum":"0fc72fc27b4fce88a00ff87bdcd0e6a4881e8810","tarball":"https://registry.npmjs.org/@adrrr/tarmac/-/tarmac-0.10.0.tgz","fileCount":29,"unpackedSize":547308,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEnyaj5J+CAoUa8YHILvDxLKVB6HM3JwtOxZyIVoZ24cAiEAoJjiXPR1rjDEYFFg8Z+P8Fqznih90p2r270CSD+nVc8="}]},"_npmUser":{"name":"adrrr","email":"adrrr.dev@gmail.com"},"directories":{},"maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tarmac_0.10.0_1788712987221_0.8273686106037661"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-09T15:12:45.459Z","modified":"2026-09-06T16:43:07.521Z","0.1.0":"2026-08-09T15:12:45.763Z","0.1.1":"2026-08-10T10:58:10.452Z","0.1.2":"2026-08-13T10:16:29.080Z","0.2.0":"2026-08-14T10:00:35.972Z","0.3.0":"2026-08-16T08:19:03.658Z","0.4.0":"2026-08-17T17:10:38.343Z","0.4.1":"2026-08-18T10:47:31.440Z","0.5.0":"2026-08-19T16:00:21.327Z","0.6.0":"2026-08-23T12:46:57.886Z","0.7.0":"2026-08-27T06:52:00.177Z","0.8.0":"2026-08-29T13:26:04.728Z","0.8.1":"2026-08-30T15:07:49.688Z","0.9.0":"2026-09-06T10:11:12.307Z","0.10.0":"2026-09-06T16:43:07.372Z"},"bugs":{"url":"https://github.com/adrrr/tarmac/issues"},"author":{"name":"adrrr"},"license":"MIT","homepage":"https://github.com/adrrr/tarmac#readme","keywords":["claude","claude-code","observability","dashboard","cli","fleet","statusline","context-window"],"repository":{"type":"git","url":"git+https://github.com/adrrr/tarmac.git"},"description":"Fleet observability for Claude Code — reads documented surfaces only, never an internal format","maintainers":[{"name":"adrrr","email":"adrrr.dev@gmail.com"}],"readme":"# tarmac\n\n[![npm](https://img.shields.io/npm/v/%40adrrr%2Ftarmac)](https://www.npmjs.com/package/@adrrr/tarmac)\n[![CI](https://github.com/adrrr/tarmac/actions/workflows/ci.yml/badge.svg)](https://github.com/adrrr/tarmac/actions/workflows/ci.yml)\n![node](https://img.shields.io/node/v/%40adrrr%2Ftarmac)\n![runtime dependencies](https://img.shields.io/badge/runtime_dependencies-0-brightgreen)\n![license](https://img.shields.io/badge/license-MIT-blue)\n\n**Fleet observability for Claude Code.** One table for every session you have running:\nbusy or idle, how full its context is, which model, what it has cost so far. It reads\ndocumented surfaces only, never an internal format.\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/media/replay-dark.gif\">\n  <img src=\"docs/media/replay-light.gif\" width=\"1100\"\n       alt=\"The tarmac map, live and then replayed. It opens on the live fleet: nodes grouped into a frame per working directory, each frame labelled with its project, sessions drawn as dials whose arc is the context window, background agents docked under the cards as strips of text, and the account's five-hour and seven-day gauges in the header. As the scrubber under the fleet is dragged the frames give way to the flat record, every node in a cell of one size, sessions still dials and agents still strips, each with its project and what it has cost. Sessions appear as the day walks past and the grid gains a cell for each, the arcs fill, the five-hour gauge fills and rolls over to zero, and a banner names the minute being replayed until Back to live is pressed and the frames come back.\">\n</picture>\n\n[Quickstart](#quickstart) · [The map](#the-map) · [The curves](#the-curves) · [Install](#install) ·\n[Configuration](#configuration) · [Commands](docs/MANUAL.md#commands-and-options) ·\n[Manual](docs/MANUAL.md) · [Changelog](CHANGELOG.md) · [Issues](https://github.com/adrrr/tarmac/issues)\n\n## Quickstart\n\n```bash\nnpx @adrrr/tarmac              # one-shot fleet table\nnpx @adrrr/tarmac --watch      # the same table, redrawn every 5s until ^C\nnpx @adrrr/tarmac serve        # the same fleet in the browser\nnpx @adrrr/tarmac serve --demo # an invented fleet with a month of history, to see it full\nnpx @adrrr/tarmac install      # chain the status line: unlocks ctx, model, effort and cost\nnpx @adrrr/tarmac uninstall    # hand your status line back\n```\n\nOn a fresh machine the first three of those are one session and no history, which is not much\nof a dashboard. `serve --demo` is the same dashboard over eight invented sessions, a day of\ntheir record and a month of journal under that, so the map, the replay and every range of the\ncurves have something in them. It reads no fleet and writes nothing — the month it shows is\ninvented in memory, like the rest of it — and the page it serves is badged `demo data`\nthroughout.\n\n```\n$ npx @adrrr/tarmac\n\nPROJECT            STATE  CTX      AS OF  MODEL    EFFORT  COST    UP\napollo             busy   28%      7m     Fable 5  max     $41.20  8h\nmercury-dashboard  busy   27%      22m !  Fable 5  max     $62.75  8h\ngemini             idle   12%      3h !   Opus 5   high    $5.40   8h\natlas              idle   — fresh  8h !   Opus 5   high    $0.00   8h\n\n! 3 reading(s) marked \"!\" are older than 10m (--stale-after)\n\n4 sessions · 2 busy · $109.35\naccount  5h 17% resets in 2h 14m · 7d 42% resets in 3d 11h · as of 7m\n```\n\nThat is the table with the status line chained. The last line belongs to the account, not to\nany one session. Every row above spends from the same five-hour and seven-day\n[window](docs/MANUAL.md#the-accounts-two-windows), so it is printed once. It is dated like\nevery other reading here, and it reads `— no reading` rather than `0%` when no snapshot\ncarried one.\n\nWith nothing installed, the same command still lists every session, its state and its uptime,\nstraight from `claude agents --json`. The context column reads `— absent`. Model, effort and\ncost fall to `—`. The line under the table counts how many sessions are covered.\n\nNode ≥ 20. Zero runtime dependencies: no framework, no bundler, nothing to audit.\n`--help` and `--version` (`-v`) work everywhere. An option handed to a command that does not\nread it is an error, never something quietly ignored. Every command, flag and route is in\n[the manual](docs/MANUAL.md#commands-and-options).\n\n## The map\n\n`tarmac serve` puts the same fleet in the browser. Every session is a row, the ages keep\nclimbing, and a banner goes up the moment a refresh fails, so the table never goes stale in\nsilence.\n\nIt binds to loopback. It refuses any request whose `Host` is not loopback, and any request a\nbrowser marks as coming from another origin, so your cwd paths and costs never leave the\nmachine. A client that sends no such mark, curl or a script, is left alone. A reverse proxy\npresents a `Host` of its own, so `--trust-host <name>` names the one to let through;\n[the manual](docs/MANUAL.md#putting-it-behind-a-reverse-proxy) says who that lets in. The\nlistening rules are [there too](docs/MANUAL.md#what-serve-listens-on).\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/media/map-dark.png\">\n  <img src=\"docs/media/map-light.png\" width=\"1100\"\n       alt=\"The tarmac map, live. Five framed groups, one per working directory and labelled with its project: auth-service, holding a session halted on a permission prompt at 61%; api-gateway, holding a session busy with its context arc at 93% and a background agent docked under the cards of that frame as a strip named after its prompt; data-pipeline, busy at 69% with an agent of its own; docs-site, holding one session reporting a status tarmac does not know and one idle at 39%; and storefront, idle at 23%. A frame says only that its nodes were read in the same directory. Nothing inside one claims that any node dispatched another. The account's five-hour and seven-day gauges sit in the header, one warning above the fleet names the unrecognised status rather than filing it as idle, and the scrubber for the replay sits under the fleet.\">\n</picture>\n\nThe tabs in the header swap the table for the same fleet drawn as nodes: one per session, the\narc its context, the shape by the name its state. A background agent has no terminal behind it\nto draw a frame with, so it gets a strip of text rather than a dial that could never fill. Both\nviews render the same reading into the same fragment, so they can never disagree. A third tab\ndraws the record rather than the reading: see [the curves](#the-curves) below.\n\nThe nodes are grouped by working directory: a frame per directory, labelled with its project,\nthe sessions inside it as cards and the agents docked underneath as strips. A frame claims one\nthing and no more: these nodes were read in the same directory. `claude agents --json`\npublishes nothing that ties an agent to whoever dispatched it, so no label, no position and no\nline inside a frame says one node asked for another. An agent whose directory matches no\nsession gets its own frame rather than somebody else's.\n\nAbove the fleet are the account's five-hour and seven-day\n[gauges](docs/MANUAL.md#the-accounts-two-windows). Under it is a scrubber over the day this\nserve has seen. Drag it and the nodes render the fleet as it was at that minute. Press play\nand the day walks past. Replayed, the nodes are drawn flat and unframed, every one of them in a\ncell of one size: a session that appears between two minutes of a scrub moves nothing but the\nnodes after it in the sample's own order, and the banner naming the minute stands in a place the\npage keeps for it. A row the grid gains still pushes what is under it, and on a phone the banner\nwraps where the live line does not. The record keeps a project name and never the directory it\nwas read in, and a basename is not a directory. Two checkouts of `atlas` answer to the same\nword, so a frame drawn on it would claim a shared directory nobody can check.\n\nThe map follows the rules the table follows. A reading past the freshness threshold is drawn\nthin, amber and dated. A percentage nobody measured is an empty dotted dial, never a ring at\nzero. Where nothing was published at all, such as the strip of an agent the join found no\nsnapshot for, nothing is drawn in its place: no dial, no dash. A word\n`claude agents --json` printed that tarmac has no boolean for is shown as it came rather than\nfiled as `idle`, and raises one warning above the fleet naming it. The page is JSON\nunderneath: `GET /api/fleet` and `GET /api/history` serve exactly what the map draws. Details\nare in [the manual](docs/MANUAL.md#the-map).\n\n## The curves\n\nThe third tab draws what moved rather than what is: context per session, cost per project, and\nthe account's two windows, over the last 24 hours out of the ring or over 7 and 30 days out of\nthe journal, if you keep one. `<canvas>` and the page's own script, no library.\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/media/curves-dark.png\">\n  <img src=\"docs/media/curves-light.png\" width=\"1100\"\n       alt=\"The curves page of the demo fleet, on the 7d range out of the invented journal. Context is a row of small multiples, one band per project: four sawtooths that climb through the day and break where the session was recycled, and storefront, a short stroke a day near the baseline. None carries the arrow that marks a climbing line, since the panel counts nothing climbing over this range. Cost is one stacked bar per day in a fixed project order, seven days between $128 and $221. Quota is the seven-day line climbing over the five-hour window's highs. A banner above names one unrecognised status, and the header is badged demo data.\">\n</picture>\n\nA context line breaks where its session did, so a recycle at three in the morning reads as a\nbreak and not as a cliff, and a minute nobody read is a hole rather than a fall to zero. The\nlines that gained fifteen points or more in the last three hours are drawn full and labelled,\nwhich is the question the chart exists for: what has to be recycled tonight. Cost is stacked\nbars, built in a fixed order so a project keeps its place in the column all week, with the\nlegend sorted by what each one spent. Quota is the seven-day line over the five-hour window,\nand a turnover the serve slept through is drawn faint and marked `≈` rather than as a firm line\nthrough a minute nobody measured.\n\nNo hover: a tap puts a cursor on a chart and every number on it becomes that moment's, with\n`Back to now` to undo it. Without `history.days` the two longer ranges are greyed out and the\nview says which key turns them on. Details are in\n[the manual](docs/MANUAL.md#the-curves).\n\n## Install\n\n`install` changes the `statusLine` key of `~/.claude/settings.json`, and never on your\nsay-so alone. It prints the whole plan first, including the exact command that undoes it,\nthen waits for a typed word. `y` is not an answer. Scripts pass `--yes`, deliberately.\n\nA status line you already had is wrapped, not replaced: its display stays byte-identical, and\n`uninstall` names which of its four restore modes ran. Two files land under `~/.claude/`, the\nwrapper and the `backup.json` that undoes it, and neither changes at runtime. The snapshots go\nto `~/.local/state/tarmac/snapshots` (`$XDG_STATE_HOME` when set), because `~/.claude` is a\ndirectory people commit. The plan, the restore modes and the cleanup of the old layout that\nkept snapshots inside `.claude` are in\n[the manual](docs/MANUAL.md#installing-safely-the-full-contract).\n\n## Why it does not break\n\nThe usual ways to watch a Claude Code fleet read something Claude Code never promised would\nstay put: transcript files, terminal panes, undocumented paths. Those break on an update, and\nworse, they break *quietly*, reporting a calm empty fleet.\n\ntarmac reads two things instead:\n\n| Source | What it gives | How solid |\n|---|---|---|\n| `claude agents --json` | which sessions exist, busy, idle or waiting on you, cwd, uptime | a documented CLI surface (`--help`: *\"Print active sessions … as a JSON array … for scripting\"*) |\n| the status line payload | context %, model, effort, cost | the JSON Claude Code hands to your own `statusLine.command` on every frame. Observed, not published as a schema |\n\nThat second row is the honest caveat. tarmac does not promise the payload will hold still.\nIt promises that a measurement it could not take never renders as a confident `0`. What you\nget instead is an em dash naming which kind of missing it is: `absent` for a session no status\nline ever wrote for, `fresh` for one that has taken no turn yet, `drift` for a release that\nmoved the payload out from under us. A stale reading keeps its value and gets dated with a\n`!`. A Claude Code build no fixture covers gets its version named *before* anything breaks,\nand tarmac keeps reporting. The full state-by-state table is in\n[the manual](docs/MANUAL.md#degradation-state-by-state).\n\n## Configuration\n\nThe settings below are judgement calls, so they are yours: three numbers, the hosts `serve`\nanswers to behind a reverse proxy, and whether it keeps a journal on disk. Everything else is\ndeliberately not configurable, and all of it works with no configuration at all.\n\n| Setting | Flag | Default |\n|---|---|---|\n| freshness threshold | `--stale-after 90s` \\| `15m` \\| `2h` | `10m` |\n| port | `--port 8080` | `4477` |\n| snapshots dir (read side) | `--snapshots-dir DIR` | the wrapper's frozen path when installed, else the XDG state directory |\n| trusted hosts | `--trust-host HOST`, once per host | none, so loopback only |\n| journal retention | `--history-days 30`, on `serve` | none, so nothing is written to disk |\n\nEach also has an environment variable and a key in `<home>/.claude/tarmac/config.json`.\nFlag beats environment beats config file beats default, settled per setting. `serve` opens by\nprinting each effective value and where it came from. Nothing is silently dropped or silently\ncorrected. A value that will not parse stops the run and says what it got, where it came from,\nand what would have worked. Spellings, edge cases and the two health fields\n`tarmac list --json` reports are in [the manual](docs/MANUAL.md#configuration).\n\n## What it deliberately does not do\n\n- **No inferred \"waiting for you\".** `agents --json` reports `waiting` with a reason, such as\n  a permission prompt or an open dialog, and tarmac draws exactly that, in the table and on\n  the map. It does not guess at the rest. A session that asked you a question in prose still\n  reports `idle`, because the only way to know better is to read a transcript, and this tool\n  does not read transcripts.\n- **Nothing on disk unless you ask for it.** `tarmac list` is a snapshot in time. A running\n  `serve` holds the last 24 hours of the readings it took itself, in memory, so the page can\n  replay them. That record reaches no further back than the serve that took it, and goes when\n  it goes. Nothing of it is written down, and that is what every install that never asked\n  otherwise does.\n\n  Set `history.days` and `serve` also appends one JSON line a minute to\n  `~/.local/state/tarmac/history/YYYY-MM-DD.jsonl`, beside the snapshots. The line is the same\n  record the page replays, minus one field: per session, the session id, the project basename,\n  the kind, the state, the context percentage and the cost, plus the account's rate limits. No\n  session name, no working directory, and not the reason a waiting session gave, which is free\n  text off `claude agents --json` and does not belong in a file that outlives the process.\n  About 2 MB a day at eight sessions. Files older than the retention you set are removed when\n  `serve` starts and once a day after that, and writing stops altogether at 256 MB, which is\n  not a number you can raise. `serve` names the retention, the cap and the directory in its\n  settings block, before it serves anything. `GET /api/history?range=7d`, or `30d`, reads those\n  files back aggregated by hour and by project, where the same route with no range is the last\n  24 hours out of memory, and the third tab of the page draws both. To stop it, unset the\n  retention wherever you set it; to erase what is there, remove the directory.\n- **No Windows.** The generated wrapper is POSIX `sh`.\n- **No remote fleets.** It watches the machine it runs on.\n\n## Development\n\n```bash\nnpm test                       # typecheck (src + test + scripts), then run the suite\nnpm run build                  # flat JavaScript into dist/\nnode scripts/demo-fleet.ts     # a second invented fleet, served on a port\n```\n\nEvery capture on this page is taken of `serve --demo`, a fleet that does not exist. A\nscreenshot of a real machine carries working directories, prompts and costs, and nothing real\nenters this repo.\nWhat CI covers, which Node version develops and which one ships:\n[the manual](docs/MANUAL.md#developing). Capturing the fixtures for a new Claude Code build:\n[the manual](docs/MANUAL.md#capturing-a-new-claude-code-version).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}