Puts Approve/Deny on your phone before an agent acts, and waits for your fingerprint.
Runs on your machine from its package; the steps are below.
At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y lauther-mcp
MCP client config
{
"mcpServers": {
"lauther": {
"command": "npx",
"args": [
"-y",
"lauther-mcp"
]
}
}
}JavaScript packages for Lauther — 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 | The Node client. Zero dependencies, two methods, TypeScript types bundled. |
lauther-mcp | An MCP server, so a coding agent can ask its owner for approval on their phone. |
npm install lauther-client
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.
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.
Node 18+. npm workspaces, no build step, no bundler.
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.
MIT