Text it like a friend, it works like staff

Text your agent from the apps you already use. It answers you and no one else, whichever harness runs it.

lnk agent start               # your agent, unless it runs already
lnk agent connect telegram    # or slack, discord, signal

Pick an app

Each app has its own page, saying what to make there and what to paste into lnk, and each gives your agent a bot or app of its own.

AppWhat your agent is there
TelegramA bot you make with BotFather
SlackAn app in your workspace, with no public address
DiscordA bot in a server of yours
SignalYour agent's own number, linked from its phone

Talk to it here

On this computer, lnk agent chat send talks to your agent with no app at all, on Link's own connection (Talk to it here).

Let a service post to it

Webhooks let GitHub, a script, or anything that signs post to your agent, which reads each post as a stranger's message.

lnk agent webhook create deploys    # prints its address and its secret, once

Connect it

connect asks for what it needs and pairs you with your agent. Your agent is stopped while it pairs, and starts again with the connection. Each agent needs its own bot or app, so connect refuses one that another agent already has. Connecting a connection the agent already has asks before starting over. To connect without prompts, set the connection's variables, which each app's page lists.

Answers as they are written

Telegram, Slack and Discord show the answer while it is written, editing the message in place. Signal shows typing, then sends the complete answer because its editing limits prevent that streaming. On Slack, the default working reaction is 👀 on the message being answered; the agent's connection settings can change or disable it.

Replies in groups

Telegram and Discord send a reply to the message that prompted the agent. Slack answers in a thread, and Signal sends a plain message to the group. The app's own page describes its setup and sharing rules; these reply styles stay the same whichever harness answers.

Several agents on one app

Each agent is its own bot or app, so several bots on one app are several agents, each answering its own messages in its own conversations and on that bot alone.

lnk agent connect telegram                # a bot for main
lnk agent connect telegram --agent work   # another bot, for work

One bridge for them all

With shared_bridge = true in the machine's settings, one bridge carries every agent's bots on this machine, each still answered by its own agent.

You and your shared chats

Your agent answers your direct messages, and your mentions of it in a group, connection or server. It answers no one else, and nothing in a group that doesn't mention it, unless you share that chat with it (below). Add the bot to the group yourself. On Slack, /invite it to the connection.

A conversation each

Each chat is a conversation of its own, apart from your direct messages, and so is each Slack thread and each topic of a Telegram forum: what's said in one stays out of the rest.

Share it with a chat

share prints a one-time code. Mention your bot with it in a Slack connection, a Telegram group or a Discord connection within 10 minutes (@company 4K7P2QXM), and whoever is in that chat can talk to your agent there, mentioning it as you do.

lnk agent share add slack

Who's speaking

Your agent knows who's speaking, by their name on the connection. Only you can share: the code is read from your messages alone. Share on its machine before moving it to a cloud.

What sharing gives them

Sharing hands the chat your agent as it is, so these hold for everyone in it:

  • They can make it do all it can. Sharing narrows nothing: its files, its tools and its memory are theirs to use through it. For a team, make a second agent with only the team's files, and its own bot (Security).
  • Still only yours: their direct messages to the bot go unanswered, and only you share, unshare and approve what it asks.
  • Your bill: their messages are turns of your agent, paid as yours are.
  • Not everywhere: Signal can't be shared, and the agent needs a harness that can tell who's speaking (Link harness).

See and end a share

lnk agent share list lists the chats your agent is shared with, and lnk agent share remove ends one, by its id or its name. Your agent's spec keeps them, as [access] message (Agent spec).

lnk agent share list
lnk agent share remove general --connection slack

Stop texting it somewhere

disconnect forgets the connection's tokens and restarts your agent if it runs. The bot or app stays yours, and each app's page says how to delete it.

lnk agent disconnect slack

The contract

Each app is a plugin of its own, and what every one answers for lnk agent is Interface.

Docs

  • Webhooks: Let a service post to your agent: GitHub, a script, anything that signs