{
  "markdown": "# lauther-js\n\nJavaScript packages for [Lauther](https://lauther.app) — push notifications to\nyour phone from any web app or script, and questions that **wait for a yes**\nbefore something irreversible happens.\n\n| Package | What it is |\n| --- | --- |\n| [`lauther-client`](packages/lauther-client) | The Node client. Zero dependencies, two methods, TypeScript types bundled. |\n| [`lauther-mcp`](packages/lauther-mcp) | An MCP server, so a coding agent can ask its owner for approval on their phone. |\n\n```bash\nnpm install lauther-client\n```\n\n```js\nimport { Lauther } from \"lauther-client\";\n\nconst lauther = new Lauther(process.env.LAUTHER_TOKEN);\n\nawait lauther.push({ title: \"Backup finished\" });\n\nif (await lauther.ask(\"Deploy v2.4 to production?\")) {\n  await deploy();\n}\n```\n\n**Only an explicit Approve returns `true`.** A denial and a timeout are both\n`false` — an unanswered question must never read as a yes.\n\n## Why this exists\n\nA browser tab can't reach someone who closed it, and building a native app per\nproject to fix that was never going to happen. Lauther is one app your projects\nshare over an HTTP call.\n\n## Development\n\nNode 18+. npm workspaces, no build step, no bundler.\n\n```bash\nnpm install\nnpm test          # both packages\n```\n\n`lauther-client` has no runtime dependencies and is tested with a stubbed `fetch`.\n`lauther-mcp` is tested by spawning the real server over stdio and driving it\nwith a real MCP client against a fake Lauther API — so a broken tool schema or\nbroken stdio wiring fails the suite rather than a user's agent.\n\n## Links\n\n- [lauther.app](https://lauther.app) · [Docs](https://lauther.app/docs.html)\n- [Recipes](https://github.com/csanadymiklos/lauther-examples) for curl,\n  Python, Home Assistant, Uptime Kuma and GitHub Actions\n- The app: [App Store](https://apps.apple.com/app/id6802635695) ·\n  [Google Play](https://play.google.com/store/apps/details?id=id.lauther)\n- **hello@lauther.id** reaches a human.\n\nMIT\n",
  "bytes": 1954,
  "sha": "9e9bbd4bcd1204e129c517691de9829889501e6165659c27e445c82c91f856b0",
  "repo_slug": "csanadymiklos/lauther-js",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_csanadymiklos_lauther_045def94/readme"
}