Linky logoLinky

Open source · Agent-first · MIT

Many URLs. One Linky.

One short link that opens every tab — for humans or agents alike.

Paste your list, share the link. Works the same in any browser, CLI, or agent prompt.

No signup, no credit card. MIT-licensed — self-host anytime.

How it works

Two steps. That's it.

Tell your agent to use Linky once. After that, whenever it needs to send you multiple URLs, it sends one Linky link instead.

01

Step 1

Tell your agent to use Linky

Copy one instruction for your agent. That setup tells it how to bundle multiple URLs into a single Linky launch link.

02

Step 2

Get one Linky URL back

Every time your agent would normally send you a pile of links, it sends one Linky URL instead. Open that one link and launch the full bundle from there.

Example reply

https://getalinky.com/l/abc123

One short Linky instead of docs + PRs + issues + dashboards.

Try it now

Paste a few URLs. Get one Linky back.

Anonymous, free, and live — no signup, no credit card. Create a Linky right here and see how quickly many links turn into one launch URL you can share anywhere.

This form creates a simple, public Linky. Need the same Linky to open different tabs per viewer? Author a policy from the Personalize panel in the dashboard, or attach one at create time with --policy (CLI) or resolutionPolicy (API / SDK). See /docs for the policy shape.

One click to create your Linky. The backend normalizes and de-dupes URL entries.

CLI preview

npx getalinky create 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' 'https://www.youtube.com/watch?v=G7RgN9ijwE4' 'https://www.youtube.com/watch?v=_OBlgSz8sSM' --base-url 'https://getalinky.com' --json

curl preview

curl -X POST 'https://getalinky.com/api/links' \
  -H 'content-type: application/json' \
  --data-binary '{"urls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ","https://www.youtube.com/watch?v=G7RgN9ijwE4","https://www.youtube.com/watch?v=_OBlgSz8sSM"],"source":"agent"}'

With a policy at create time

linky create https://acme.com/docs https://acme.com/status \
  --policy ./acme-team.policy.json \
  --title "Acme standup"

Agent-first path (Sprint 2.5). The Linky is locked down from the first click — no public window. Anonymous creates stay immutable until claimed.

Works with your stack

Agent tools and developer IDEs

Cursor monochrome mark
Claude monochrome mark
OpenAI monochrome mark
Gemini monochrome mark
Codex monochrome mark
Windsurf monochrome mark
VS Code monochrome mark
Warp monochrome mark

Who it's for

Built for agent sessions and team rituals.

Hand off full context packs between agents and teammates — one URL replaces a wall of links.

Package a research session for a demo, a client, or an async update. Send the URL, skip the screenshots.

Give every agent task a clean ending: one Linky instead of 10+ URLs in chat.

Launch PR review bundles for standups and release trains.

Run incident-response checklists from one shareable URL — no hunting for tabs.

Ship a single team standup Linky — each teammate opens their own queue, drafts, and inbox from the same URL.

Route signed-in partners to partner-scoped URLs while staff open internal runbooks from the same Linky.

See which personalized rule your audience actually matched — owner-side insights with zero viewer tracking.

FAQ

The questions people ask first.

What can I bundle into a Linky?

Any valid http or https URL. Paste links from docs, dashboards, tickets, repos, and runbooks. The backend normalizes and de-dupes them for you.

Do I need an account?

No. Anonymous creation is free and frictionless — every create call returns a claim URL so you can bind the Linky to an account later. Accounts unlock editing, renaming, team workspaces, and version history. If you'd rather own the whole thing end-to-end, the repo is MIT-licensed — clone it, self-host on Vercel + Neon, and run your own Linky instance.

What happens when someone opens a Linky URL?

They land on the launcher page, click Open All, and every saved tab fires. If the browser blocks popups, manual fallback links are right there — nobody gets stranded.

Can my agent create Linky links directly?

Yes — four paths. Drop the Linky MCP into Cursor, Claude Desktop, Codex, Continue, or Cline with a paste-ready mcp.json and your agent can call create, update, list, insights, and key management as first-class tools. Or use the public HTTP API, the CLI, or the npm SDK directly — every surface shares one service layer, so the shapes match. See /docs/mcp for the MCP config snippets.

How does personalization work?

Attach a resolution policy to any Linky. On every click, rules evaluate the viewer's signed-in identity — email, email domain, user id, GitHub login, Google email, org memberships — and the launcher opens the matching tab set. Unmatched and anonymous viewers fall through to the public launch bundle, so the same URL stays safe to share publicly.

Do viewers need an account to see personalized tabs?

No account is needed for the public bundle — it opens for anyone. To see a personalized tab set the viewer signs in, and the launcher nudges them when a policy is in play but they haven't signed in yet.

Can my agent attach a policy when creating a Linky?

Yes. The create endpoint accepts an optional resolutionPolicy in the same request, and the CLI exposes linky create ... --policy file.json (use --policy - to pipe from stdin). The Linky is locked down from the first click — no window where an unrestricted version is live. Anonymous launch bundles are immutable until claimed, so if your agent attaches a policy without signing in, pass email alongside it so the claim URL lands with the eventual human owner.

Can a team share Linky launch bundles?

Yes. Switch to your org workspace and every Linky you create is team-owned. Teammates are mapped to one of three roles — admin, editor, viewer — derived from their Clerk org role. Admins delete and manage keys, editors edit, viewers read. Role changes happen in Clerk; Linky mirrors them through webhooks. Full role model at /docs/access-control.

How do I see whether my personalized Linky is working?

Open any launch bundle in the dashboard and click Insights. You see views, unique viewer-days, Open All clicks, and the per-rule breakdown — did the engineering rule match, or did everyone fall through to the public bundle? No destination-tab tracking, no viewer cookies. Owner questions only: did my audience arrive, and did the right rule match?

Is it safe to put a Linky API key in an LLM's context?

Pick a read-only scope at mint time. Linky keys carry one of three scopes — links:read, links:write, or keys:admin — and scope is locked at mint. A read-only key can list and view bundles, read insights, and nothing else. If the key leaks from an agent transcript, the blast radius is exactly what you chose up front.