Get Started

lnk is a small core, and each part of Link is a plugin, the way git runs git-<name>. The core only installs, runs, updates and removes plugins, so you have only what you use, and one plugin can't break another. To install lnk and pick your first plugins: Install.

Needs: lnk (Install). Free.

Quickstart

lnk plugin list                                 # what's installed
lnk plugin add telegram                         # add one, with what it needs
lnk upgrade                                     # lnk and its plugins, to the latest release

What each choice installs

lnk up asks which parts you want and installs their plugins:

You pickPluginsCommands
agentssandbox, harness, link-harnesslnk agent, lnk sandbox
modelsmodelslnk model
tunnelstunnel, accountslnk tunnel, lnk auth
bucketsbucketlnk bucket
boxescloud, accounts, box, vpn, sandboxlnk cloud, lnk auth, lnk box, lnk vpn, lnk sandbox
memorylink-memory, models (and sandbox, harness)lnk agent memory

More come when you need them: a harness (openclaw, hermes, deepseek) when you lnk agent use it, a channel plugin (telegram, slack, discord, whatsapp, signal) when you connect one, link-memory when you turn on your agent's memory (lnk agent memory use) without picking memory, and aws or gcp when you connect that cloud.

Add or remove a plugin

lnk plugin list             # every plugin, and which are installed
lnk plugin add telegram     # also installs harness and sandbox, which it needs
lnk plugin remove bucket    # stops what it runs, deletes the program; its settings and files stay
  • add installs from the release of lnk's own version, with the plugins it needs: a harness, a channel or link-memory needs harness, which needs sandbox; aws and gcp need cloud; tunnel needs accounts, whose lnk auth login it connects with; box needs cloud and accounts, whose login tags your boxes as yours; vpn needs sandbox, whose proxy is its exit's home side.
  • remove also removes what needs the plugin: remove harness takes every harness (link-harness, openclaw, hermes, deepseek), link-memory and the channels, remove cloud takes aws, gcp and box. Each stops what it runs first (remove harness stops your agents).
  • Run a command whose plugin you don't have, and lnk offers to install it. Outside a terminal it fails and names lnk plugin add <plugin>. The same goes for a plugin it needs that isn't installed, such as accounts for box or tunnel.

A harness Link doesn't ship comes from its own GitHub repository, signed by its maker's key, not Link's. The ones Link ships are under Use another harness.

lnk plugin add https://github.com/<owner>/<repo>          # shows its key and asks
lnk plugin add https://github.com/<owner>/<repo> --yes    # in a script: trusts the key without asking
lnk plugin list                                           # Link's plugins, then those from outside, with where from
lnk plugin remove <name>                                  # the program, and lnk's trust in its key
  • add installs the plugin from the repository's latest release. The first time, it shows the release's key and asks; lnk then keeps the repository and the key in ~/.config/lnk/plugins.toml.
  • lnk upgrade updates it from the same repository, only with a release signed by that key.
  • It may only be a harness adapter: one that doesn't answer the harness contract isn't installed.
  • It runs as you, like any program you install. Link's sandbox confines the harness it installs, not the plugin itself (Security).
  • lnk agent move to a box adds it there from the same repository, trusting only the key this computer trusted.

Upgrade

lnk upgrade          # lnk and every installed plugin, to the latest release
lnk upgrade 0.11.0   # or to this version

Each release is checked against its signature first; if anything fails, what you have stays as it was. The relay tells a connected lnk when a newer release exists.

Uninstall

lnk uninstall                               # asks what else should go
lnk uninstall --yes                         # only lnk and its plugins
lnk uninstall --yes --delete agents,relay   # and these parts

lnk uninstall has each plugin stop what it runs (your agents, your exits), and removes lnk and its plugins. Everything Link kept stays unless you pick it, so installing again picks it up. Each plugin names what it keeps; Link's own parts:

PartWhat goes
agentsYour agents, their memory, settings and keys
personalYour files in ~/Link/Personal
bucketsBucket settings and encrypted buckets' passwords
cloudsCloud keys and Link's SSH key to your boxes
relayYour relay login
restEverything else in ~/.config/lnk and ~/Link
allAll of them
  • Back up an agent first with lnk agent backup: agents deletes its memory and conversations.
  • personal deletes files you never pushed to a cloud, and buckets deletes the only copy of encrypted buckets' passwords.
  • clouds leaves your boxes running, and billing.
  • rest takes folders you made in ~/Link too.
  • On a Mac, each part's Keychain items go with it.
  • Another program named lnk-* beside lnk goes too (what it may run).
  • It leaves your relay login on the relay's list, anything in your clouds, and the bots and apps you made for channels: delete a Telegram bot with BotFather's /deletebot, a Slack app at api.slack.com/apps, and a Discord application; unlink WhatsApp or Signal on the phone.
  • Installed with Homebrew, it prints the command that removes the programs. Installed with cargo, it prints cargo uninstall with the crates cargo installed them from, and deletes any it doesn't track.

Get help

lnk help                  # every group and command
lnk help bucket push      # one command, with every flag
lnk agent --help

Where things live

  • ~/.local/bin/lnk and lnk-<plugin>: the core and its plugins, side by side. LNK_INSTALL_DIR moves them.
  • ~/.config/lnk: Link's settings, each plugin's. plugins.toml is where each plugin from outside Link comes from, and its key.
  • ~/Link: your files (Personal) and your agents' (Agents).

Troubleshooting

SymptomFix
A command says its plugin isn't installedlnk plugin add <plugin>
"isn't a harness adapter"Only harnesses are added from outside Link
A plugin from outside Link "not upgraded: ... doesn't trust"Its release is signed by another key: if its maker says they changed keys, lnk plugin remove <name>, then add it again
"The plugin at ... isn't in lnk's folder"Remove it the way you installed it

What's checked before anything installs: Security. Why it works this way: Decisions. How plugins are built: plugins.md.