Getting Started
Three steps to share your first folder with an AI assistant.
Create your account
Install and run the agent
curl -fsSL http://127.0.0.1:35401/install.sh -o dlink-install.sh && head -1 dlink-install.sh | grep -q '^#!/bin/sh' && sh dlink-install.shirm is a PowerShell command):irm http://127.0.0.1:35401/install.ps1 -OutFile dlink-install.ps1; if ((gc dlink-install.ps1 -TotalCount 1) -match '^#Requires') { .\dlink-install.ps1 } else { 'Not the DeviceLink installer - check the URL' }powershell -NoProfile -Command "irm http://127.0.0.1:35401/install.ps1 -OutFile dlink-install.ps1; if ((gc dlink-install.ps1 -TotalCount 1) -match '^#Requires') { .\dlink-install.ps1 } else { 'Not the DeviceLink installer - check the URL' }"~/.devicelink on macOS and Linux, and%USERPROFILE%\.devicelink on Windows; set DLINK_HOME before installing to choose somewhere else. Re-run the installer to upgrade. To uninstall, delete that folder -rm -rf ~/.devicelink, or on WindowsRemove-Item -Recurse -Force $env:USERPROFILE\.devicelink. If you already have Node 20 or later and prefer npm:npm install -g @devicelink/dlinkdlink. The agent starts an interactive console. Type signin to authenticate with the same Google account you used on the website. A browser window will open to complete sign-in.dlink is not found after installing, its folder is not on your PATH. The installer says so and prints the command; these are the same ones.export PATH="$PATH:$HOME/.devicelink/bin"$env:PATH += ";$env:USERPROFILE\.devicelink\bin"[Environment]::SetEnvironmentVariable('PATH', "$([Environment]::GetEnvironmentVariable('PATH','User'));$env:USERPROFILE\.devicelink\bin", 'User')Connect an AI platform
dlink again. Typingstop in the console disconnects the bridge but leaves the agent open, sostart reconnects without signing in again.DLINK_AUTO_UPDATE=0 to be notified about every update rather than having any of them applied.Agent commands
These commands are typed into the agent console after running dlink:
help (?)Show the command liststart (run)Connect the bridgestopDisconnect the bridge. The agent keeps running; use start to reconnectstatusShow device, bridge and session statedoctorRun local environment checkssigninSign in to DeviceLink (opens browser)signoutSign out and disconnect the bridgeroots listList the directories shared with the bridgeroots addShare an additional directoryreplace (yes, y)Take over an existing session on conflictCommand line options
These are passed when starting the agent, for example dlink --headless --root /srv/data:
-h, --helpShow help and exit-v, --versionPrint the agent version and exit--headless [=true|false]Run without the interactive UI--env <file>Load environment from a specific file--root <path>Share this directory with the bridge--control-url <url>Override the control plane base URL--bridge-ws-url <url>Override the bridge WebSocket URL--enrollment-file <file>Path to a .devicelink enrollment key--private-key-file <file>Path to the device private key--public-key-file <file>Path to the device public keyRunning without a terminal
On a server or in a container there is no interactive console to type signin into. Use an enrollment key instead: an organization admin issues one under Organization -> Devices, which downloads a .devicelink file. Pass it to the agent and it requests access on startup:
dlink --headless --root /srv/data --enrollment-file ./enrollment-key.devicelinkdlink --headless --root C:\SharedData --enrollment-file .\enrollment-key.devicelinkThe device then appears under Organization -> Devices as a pending request. An admin approves it there and the agent connects. You can also supply the key as the ENROLMENT_KEYenvironment variable instead of a file path.