io.github.csanadymiklos/lauther
Puts Approve/Deny on your phone before an agent acts, and waits for your fingerprint.
Open source Open in the app JSON README (API)
About
Puts Approve/Deny on your phone before an agent acts, and waits for your fingerprint.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- csanadymiklos
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 0.1.1
- Last push
- 2026-09-04T19:41:34Z
- Repository state
- ativo
- Language
- JavaScript
- Added
- 2026-09-04 20:00:53
- Updated
- 2026-09-04 20:00:53
- Origin id
io.github.csanadymiklos/lauther
README
# lauther-js
JavaScript packages for [Lauther](https://lauther.app) — push notifications to
your phone from any web app or script, and questions that **wait for a yes**
before something irreversible happens.
| Package | What it is |
| --- | --- |
| [`lauther-client`](packages/lauther-client) | The Node client. Zero dependencies, two methods, TypeScript types bundled. |
| [`lauther-mcp`](packages/lauther-mcp) | An MCP server, so a coding agent can ask its owner for approval on their phone. |
```bash
npm install lauther-client
```
```js
import { Lauther } from "lauther-client";
const lauther = new Lauther(process.env.LAUTHER_TOKEN);
await lauther.push({ title: "Backup finished" });
if (await lauther.ask("Deploy v2.4 to production?")) {
await deploy();
}
```
**Only an explicit Approve returns `true`.** A denial and a timeout are both
`false` — an unanswered question must never read as a yes.
## Why this exists
A browser tab can't reach someone who closed it, and building a native app per
project to fix that was never going to happen. Lauther is one app your projects
share over an HTTP call.
## Development
Node 18+. npm workspaces, no build step, no bundler.
```bash
npm install
npm test # both packages
```
`lauther-client` has no runtime dependencies and is tested with a stubbed `fetch`.
`lauther-mcp` is tested by spawning the real server over stdio and driving it
with a real MCP client against a fake Lauther API — so a broken tool schema or
broken stdio wiring fails the suite rather than a user's agent.
## Links
- [lauther.app](https://lauther.app) · [Docs](https://lauther.app/docs.html)
- [Recipes](https://github.com/csanadymiklos/lauther-examples) for curl,
Python, Home Assistant, Uptime Kuma and GitHub Actions
- The app: [App Store](https://apps.apple.com/app/id6802635695) ·
[Google Play](https://play.google.com/store/apps/details?id=id.lauther)
- **hello@lauther.id** reaches a human.
MIT