{"_id":"@aakrit512/gatekeep","_rev":"5-5f9ae6843be2eda96bcd218311bb0bd1","name":"@aakrit512/gatekeep","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@aakrit512/gatekeep","version":"1.0.0","keywords":["coding-agent","code-review","openai","typescript"],"author":"","license":"ISC","_id":"@aakrit512/gatekeep@1.0.0","maintainers":[{"name":"aakrit512","email":"aakritsubedi9@gmail.com"}],"bin":{"gatekeep":"dist/cli.js"},"dist":{"shasum":"12f2ee70b46c50296fc788cc385daed8e6eee087","tarball":"https://registry.npmjs.org/@aakrit512/gatekeep/-/gatekeep-1.0.0.tgz","fileCount":19,"integrity":"sha512-YTf8mOHWIm8LC7XiyRwrBOolbfR1ji1N5ByXULq+plegbC2cqjtaRMNIv9FEA1sQJxSatxHpPeh5np1GPsXN+A==","signatures":[{"sig":"MEUCIQCHrdN3PXWP2ePT/gqNctHKWpLcOW/ZJ4a3JK23KwhPowIgayviy5ihAbQ0b3UGH9fzbZY8z19iO9qEfgqrZzm9esM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179631},"main":"./dist/cli.js","type":"module","engines":{"node":">=20"},"gitHead":"fa60ebf8c0ca6bf145009f50a22220e82f577464","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc -p tsconfig.build.json","start":"tsx src/cli.ts","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"aakrit512","email":"aakritsubedi9@gmail.com"},"_npmVersion":"11.13.0","description":"A local browser-based coding agent for project review and chat.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"dotenv":"^17.4.2","openai":"^6.44.0","headroom-ai":"^0.22.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gatekeep_1.0.0_1782062355594_0.4752749674983143","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aakrit512/gatekeep","version":"1.0.1","keywords":["coding-agent","code-review","openai","typescript"],"author":"","license":"ISC","_id":"@aakrit512/gatekeep@1.0.1","maintainers":[{"name":"aakrit512","email":"aakritsubedi9@gmail.com"}],"bin":{"gatekeep":"dist/cli.js"},"dist":{"shasum":"f7584d811c082abedfc0b36fe4f08cb64b1b9713","tarball":"https://registry.npmjs.org/@aakrit512/gatekeep/-/gatekeep-1.0.1.tgz","fileCount":19,"integrity":"sha512-dIBzrLnbqXb0rhtQ2/uFnXLrBpfQGtcZ9dIO8qqRV7yP2TJZ7JIZfjgZjB/zAciTU7fx1u0ybCrXOLVb9jbBUQ==","signatures":[{"sig":"MEUCIQCbY1AvkrTZRHiF3a7Sx/mmZD8nSVrLnnYrkCShELit1QIgToA97hjaO3roNXNWnjP531dCMCzw+sjvnB7V9SS98QU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":178126},"main":"./dist/cli.js","type":"module","engines":{"node":">=20"},"gitHead":"fa60ebf8c0ca6bf145009f50a22220e82f577464","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc -p tsconfig.build.json","start":"tsx src/cli.ts","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"aakrit512","email":"aakritsubedi9@gmail.com"},"_npmVersion":"11.13.0","description":"A local browser-based coding agent for project review and chat.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"dotenv":"^17.4.2","openai":"^6.44.0","headroom-ai":"^0.22.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gatekeep_1.0.1_1782063018137_0.45163599922987174","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aakrit512/gatekeep","version":"1.0.2","keywords":["coding-agent","code-review","openai","typescript"],"author":"","license":"ISC","_id":"@aakrit512/gatekeep@1.0.2","maintainers":[{"name":"aakrit512","email":"aakritsubedi9@gmail.com"}],"bin":{"gatekeep":"dist/cli.js"},"dist":{"shasum":"3321e227fc239d30494439f34a43efd3a1f65e18","tarball":"https://registry.npmjs.org/@aakrit512/gatekeep/-/gatekeep-1.0.2.tgz","fileCount":19,"integrity":"sha512-BB+c8U6r7K1TL9r433tzlfZ6Q7W3MTPsVi/gIE9f41g8FAgkz2g4Z8T1u9rrfpXXUUMxmuQAeDvSIIfhQzYvew==","signatures":[{"sig":"MEYCIQC/5wpr1ELKvPrWUM0xSwH7GZLNH9n+IXlgxiKmSWeYzwIhAKPRFyyRTuv6Cc9E0Bsb4muIJGyqcb9CXLsqY66rtyOk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177420},"main":"./dist/cli.js","type":"module","engines":{"node":">=20"},"gitHead":"fa60ebf8c0ca6bf145009f50a22220e82f577464","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc -p tsconfig.build.json","start":"tsx src/cli.ts","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"aakrit512","email":"aakritsubedi9@gmail.com"},"_npmVersion":"11.13.0","description":"A local browser-based coding agent for project review and chat.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"dotenv":"^17.4.2","openai":"^6.44.0","headroom-ai":"^0.22.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gatekeep_1.0.2_1782091996011_0.5376791686101265","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aakrit512/gatekeep","version":"1.0.3","keywords":["coding-agent","code-review","openai","typescript"],"author":"","license":"ISC","_id":"@aakrit512/gatekeep@1.0.3","maintainers":[{"name":"aakrit512","email":"aakritsubedi9@gmail.com"}],"bin":{"gatekeep":"dist/cli.js"},"dist":{"shasum":"7ee4650a2f6957a72d4b246d482f032d5e879976","tarball":"https://registry.npmjs.org/@aakrit512/gatekeep/-/gatekeep-1.0.3.tgz","fileCount":20,"integrity":"sha512-DKdDBUX0YhStgmRpdgXwLmP6YH+Zy98B9EGd2ZQSYE2KoS2ZDPQktmHXY93QE/MJJaGQhgMnnkHoliEmj1KARQ==","signatures":[{"sig":"MEYCIQCPgr/Cs5DW8d2zp571JMcmZDnC5ogx/AEF4sPLTUgwxAIhANLXIgCBNwNO96EIGy3jKWvrxMfYYc6xHadyVFVsDYBl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184121},"main":"./dist/cli.js","type":"module","engines":{"node":">=20"},"gitHead":"b681014e2bfec53483db8db2744942db3fddceae","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc -p tsconfig.build.json","start":"tsx src/cli.ts","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"aakrit512","email":"aakritsubedi9@gmail.com"},"_npmVersion":"11.13.0","description":"A local browser-based coding agent for project review and chat.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"dotenv":"^17.4.2","openai":"^6.44.0","headroom-ai":"^0.22.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/gatekeep_1.0.3_1782098214661_0.26564079717799016","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@aakrit512/gatekeep","version":"1.0.4","description":"A local browser-based coding agent for project review and chat.","main":"./dist/cli.js","bin":{"gatekeep":"dist/cli.js"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.build.json","prepack":"npm run build","prepublishOnly":"npm run build","start":"tsx src/cli.ts","typecheck":"tsc --noEmit","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["coding-agent","code-review","openai","typescript"],"author":"","license":"ISC","engines":{"node":">=20"},"type":"module","dependencies":{"dotenv":"^17.4.2","headroom-ai":"^0.22.4","openai":"^6.44.0"},"devDependencies":{"@types/node":"^26.0.0","tsx":"^4.22.4","typescript":"^6.0.3"},"gitHead":"57e9a230d362a5c36683fa0027ae671aecc45114","_id":"@aakrit512/gatekeep@1.0.4","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-pLgQnGpVAKyEmhwbjYgAuRVKUSc/pYfqUKZB1Maj5rasSiEeMW7PcFGBBTtk3x/n7Cbqs0g6XOn1QJho3DuiZw==","shasum":"6add172a6a773ec2af0140acfb52e33b677cf240","tarball":"https://registry.npmjs.org/@aakrit512/gatekeep/-/gatekeep-1.0.4.tgz","fileCount":20,"unpackedSize":187720,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCqcGWhT/uHMUO4Yf+amVb01b8g3lKUrekR49hYELf3pwIhAL4u8rQV+l2Km6i550fwjKsMBYMtEkG/c/s/CP4b9VGT"}]},"_npmUser":{"name":"aakrit512","email":"aakritsubedi9@gmail.com"},"directories":{},"maintainers":[{"name":"aakrit512","email":"aakritsubedi9@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gatekeep_1.0.4_1782140375387_0.4990152771650811"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-21T17:19:15.447Z","modified":"2026-06-22T14:59:35.624Z","1.0.0":"2026-06-21T17:19:15.748Z","1.0.1":"2026-06-21T17:30:18.274Z","1.0.2":"2026-06-22T01:33:16.137Z","1.0.3":"2026-06-22T03:16:54.820Z","1.0.4":"2026-06-22T14:59:35.511Z"},"license":"ISC","keywords":["coding-agent","code-review","openai","typescript"],"description":"A local browser-based coding agent for project review and chat.","maintainers":[{"name":"aakrit512","email":"aakritsubedi9@gmail.com"}],"readme":"# Gatekeep\n\nGatekeep is a local web app for reviewing codebases with an OpenAI-compatible model.  \nIt runs on your machine, keeps project/chat history locally, and helps you initialize and inspect repositories safely.\n\n## What You Get\n\n- Local browser UI for project setup and chat-based review.\n- One-click project initialization that creates `docs/intro.md` in the selected repo.\n- Project markdown context loading, including special handling for `developer.md`.\n- Built-in Doctor checks for Node runtime, API config, and project path readiness.\n- Local storage for project history, tool traces, token usage, and estimated cost.\n\n## Requirements\n\n- Node.js `20+`\n- An OpenAI-compatible API key\n\n## Install\n\nInstall from npm (recommended):\n\n```sh\nnpm install --global @aakrit512/gatekeep\n```\n\nOr run from source:\n\n```sh\npnpm install\npnpm run build\npnpm link --global\n```\n\n## Start Gatekeep\n\n```sh\ngatekeep start --project /path/to/repo\n```\n\nDefaults:\n\n- Host: `127.0.0.1`\n- Port: `9808`\n\nYou can also run:\n\n```sh\ngatekeep start --project .\ngatekeep start --port 9809 --host 0.0.0.0\n```\n\nThen open `http://127.0.0.1:9808`.\n\n## First-Run Setup (In the UI)\n\n1. Choose a project directory.\n2. Open **Config** and set:\n   - `AI_API_KEY`\n   - `AI_BASE_URL` (for example `https://api.openai.com/v1`)\n   - `MODEL_NAME` (for example `gpt-4o`)\n3. Run **Doctor** and fix any reported issues.\n4. Click **Initialize** to generate `docs/intro.md`.\n5. Start chatting in the review panel.\n\n## Project Markdown Context\n\nAdd a `developer.md` file at the root of any project you review. Put developer-specific notes there: coding standards, architecture constraints, review preferences, deployment caveats, or anything the agent should treat as project instructions. Gatekeep loads `developer.md` as a developer prompt.\n\nGatekeep also checks root-level markdown files such as `README.md`, `CONTRIBUTING.md`, or `ARCHITECTURE.md` and adds them to the model context by filename. The dashboard project table shows which markdown files were found and prompts you to add `developer.md` when it is missing.\n\n## Environment Variables\n\nYou can set config through `.env` (or UI settings):\n\n```sh\nAI_API_KEY=your_api_key\nAI_BASE_URL=https://api.openai.com/v1\nMODEL_NAME=gpt-4o\n```\n\n## Local Data and Privacy\n\nGatekeep stores data under your OS config/app-support directory:\n\n- `config.json` for provider/model/base URL/API key\n- `projects.sqlite` for projects, chat history, activity traces, and usage\n\nNothing is uploaded except model API requests sent to your configured provider.\n\n## Common Commands\n\n```sh\ngatekeep --help\ngatekeep start\ngatekeep start --project .\npnpm run typecheck\n```\n","readmeFilename":"README.md"}