Your customers now
log in with AI agents.
Decide what they can seedownloadchangesend.

NanoTarget spots the agent the moment it attaches to a signed-in session, and lets each endpoint allow, mask, step up or block. Three lines on the server.

$npm i nanotarget
npmjs.com/package/nanotarget · one install — the engine comes with it · Open live demo
0.1–0.5 s to detect Claude in Chrome 0 false blocks in 0 recorded human runs 0.000 AUC, cross-validated across people & devices Apache-2.0 SDK · engine on your server · no data leaves
Recognises the agents your customers already use
Claude in ChromeClaude desktop browserChatGPT AtlasChatGPT AgentOpenAI CodexPerplexity CometPlaywright & Puppeteer driversWeb Bot Auth signed agentsAntigravityHumanised bots (ghost-cursor)
01

A customer signs in

Their clicks move like a hand. The endpoint returns the balance.

02

An AI agent attaches

Seen in 0.3 s. What is on screen is sealed before the agent reads it.

03

The endpoint decides

Balance masked. Export blocked. Every decision logged.

04

The person takes it back

A passkey proves presence. The session is theirs again.

bank.example.com/accounts
Welcome back
Current account · USD
Session protected
Available balance
$4,939.10
Show balanceDownload statement
Personal details
NameAda Lindqvist
IBANGB29 NANO 6016 1331 9268 19
Phone+1 (415) 555-0142
Assistant
What’s my balance?
Reading the page…
Verify it’s youTouch ID · passkey
decision balance.read → allow · actor=human_like · HUMAN_KINEMATICS

Built for the session, not the door

Bot management works at the door. NanoTarget works inside the session, at the endpoint that returns the data.

Detected at attach time

Overlay markers, injected globals, script reads, signed requests — seen 0.1–0.5 s after attach, before the first action.

Pointer physics per click

A hand curves, trembles and slows onto the target. A driver teleports and releases in 1–4 ms. AUC 0.999, zero false positives.

Policy per endpoint

allow · mask · step_up · block per resource, in your JSON, decided on your server, written to an audit log.

Seal on attach

What is already on screen is redacted the instant an agent appears. Its read sees ••••.

Passkey reclaim

After an agent, the session stays “agent” until the person proves presence with Touch ID or Windows Hello.

Observe first, enforce later

Start in observe: nothing blocked, everything recorded. Review, then flip one word.

How it tells a hand from a program

Three kinds of pointer, live: a hand, a driver, a bot pretending to be a hand.

Human curved, trembling, slows onto the target Agent driver teleports, releases in 1–4 ms Humanised bot smooth generated curve — too clean

In 2026, customers log in to their bank, their CRM and their insurer with an AI agent.No application has an answer to that.We are the answer.

Integrate in an afternoon — or let your coding agent do it

Hand your coding agent the npm link and say “install this”. It scans your app, proposes what to gate, and wires it in.

// npm i nanotarget  — the engine (nanotarget-engine) is installed with it; import only from 'nanotarget/express'
import { nanotarget } from 'nanotarget/express';

const nt = await nanotarget({
  secret: process.env.NT_SECRET,            // ≥ 32 bytes, stable — signs tokens and decision proofs
  policy: './nanotarget.policy.json',
  db: 'sqlite:./nanotarget.db',
  identify: (req) => req.session?.userId ?? null,   // your login id, never a constant
  apiKey: process.env.NT_API_KEY,           // optional: the portal shows agent share, decisions, proofs
});
app.use(nt.middleware());                    // serves /nanotarget/sdk.js, /health, /proof-keys and the SDK's API
app.get('/api/balance', nt.protect('balance.read'), (req, res) => nt.send(req, res, balance, maskBalance));

Try it against a real agent

Open one as yourself — everything works. Paste the prompt into an agent and watch the same account close.

Loading…

Know who’s clicking.

One npm i nanotarget. The SDK and middleware are Apache 2.0; the engine they pull in is source-available, production use granted. Everything runs on your server. Add an API key and the portal shows you how many of your sessions had an AI agent in them.