friendlilink
Health Warn
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 7 GitHub stars
Code Fail
- rm -rf — Recursive force deletion command in .github/workflows/sync-hermes-plugin.yml
- fs module — File system access in package.json
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
For FriendliLink, our integration convenience tool.
FriendliLink
Use FriendliAI models in Claude Code, OpenCode, Codex, Pi, Cursor, Hermes Agent, and DeepSeek Harness.
frlink wires the agent's provider settings (API key, base URL, model) to run through FriendliAI, and can restore the original settings just as easily.
Supported agents: Claude Code CLI, Cursor Desktop / IDE, Codex CLI, OpenCode, Pi, Hermes Agent, DeepSeek Harness.
Table of contents
Install
One-liner (downloads and runs the installer):
curl -fsSL https://raw.githubusercontent.com/friendliai/friendlilink/main/install.sh | bash
Or from a clone:
gh repo clone friendliai/friendlilink
cd friendlilink
npm install
npm run dev -- login
The installer builds the CLI and puts a frlink launcher on your PATH (~/.local/bin). Requires Node.js >= 18.
Authentication
Grab your API key at Friendli Suite, then:
frlink login
This saves the key to the OS keychain. If the keychain is unavailable or the write cannot be verified, frlink warns and falls back to ~/.frlink/.api-key with owner-only permissions.
logout removes the key saved by frlink, including the fallback file. It does not disable agents or remove keys already written to their configurations. To disconnect everything, run:
frlink all off
frlink logout
Enabling a harness
Checking what's installed on your machine
frlink check installed
frlink: Installed: Claude Code, Codex, DeepSeek Harness, Hermes Agent, OpenCode, Pi.
frlink: Not installed: Cursor.
Connect a harness
Where <agent> is one of: claude, cursor, codex, opencode, pi, hermes, dsh.
frlink <agent> on
on configures the agent to use FriendliAI.
To manage all installed agents at once:
frlink all on
frlink: Enabled FriendliAI on Claude Code, Codex, DeepSeek Harness, OpenCode, Pi.
frlink: Cursor is not installed — skipped.
frlink: Hermes Agent is already routed through FriendliAI — left untouched.
Verify connection
frlink <agent> status
frlink check status
status shows the agent's current routing status.
FriendliAI API key: saved
claude (Claude Code): routed through FriendliAI
codex (Codex): routed through FriendliAI
cursor (Cursor): routed through FriendliAI
dsh (DeepSeek Harness): routed through FriendliAI
hermes (Hermes Agent): routed through FriendliAI
opencode (OpenCode): routed through FriendliAI
pi (Pi): routed through FriendliAI
Agents frlink has not connected report not routed — they are still on their
own provider.
Restore settings
frlink <agent> off
frlink all off
off restores the configuration saved before on.
Claude Code
Claude Code routes through per-slot model mapping — pick a FriendliAI model for each of Claude Code's model slots, either interactively or with flags:
frlink claude on
claude: routed through FriendliAI.
api key source: keychain
opus: zai-org/GLM-5.3
sonnet: zai-org/GLM-5.3-Flash
haiku: google/gemma-4-31B-it
Cursor
- Launch and quit Cursor once before the first
on. Keep it fully closed while its settings are being changed. Commands run from Cursor's terminal are queued until Cursor exits. onregisters the FriendliAI catalog. Choose a model from each conversation's model picker. Cursor does not accept--model.- Cursor Cloud Agents—including Build in Cloud, Start from Scratch, Automations, and the Web, iOS, Slack, GitHub, Linear, and API surfaces—cannot use models configured with a custom API key.
Hermes Agent
Hermes resolves its home from $HERMES_HOME (default ~/.hermes), and frlink writes to whatever home that resolves to. To configure frlink per hermes profile, point HERMES_HOME at the profile directory and run on
hermes profile create myprofile # creates ~/.hermes/profiles/myprofile
export HERMES_HOME=~/.hermes/profiles/myprofile
frlink hermes on
hermes -p myprofile # runs against that profile
Run without the env var to configure the default home (~/.hermes).
Hermes can also be configured without
frlinkby installing the hermes-friendli-provider plugin directly.
DeepSeek Harness (dsh)
dsh operates on a dsh profile (default web). Pass --profile <name> to target a different profile — on every verb (on, off, status), since state is per-profile:
frlink dsh on --profile myprofile
The dsh home itself follows $DSH_HOME (default ~/.dsh).
DeepSeek Harness can also be configured without frlink by installing the @friendliai/dsh-llm-friendli plugin directly.
All commands
frlink — run your coding agents on FriendliAI models
Usage:
frlink <command> [flags]
frlink <agent> <on|off|status> [flags]
Getting started:
frlink login [--api-key <key>] Save your FriendliAI API key
frlink check installed [--json] List the agents installed on this machine
frlink all on [flags] Route every installed agent through FriendliAI
frlink all off [flags] Restore every agent's own settings
Agents:
claude Claude Code CLI opencode OpenCode
cursor Cursor Desktop / IDE pi Pi
codex Codex CLI hermes Hermes Agent
dsh DeepSeek Harness
Per-agent commands:
frlink <agent> on [--api-key <key>] [--model <id>]
frlink <agent> off
frlink <agent> status [--json]
Agent-specific flags:
claude [--opus|--sonnet|--haiku|--fable|--subagent <id>]
[--interactive|--non-interactive] [--base-url <url>]
codex [--reasoning <off|minimal|low|medium|high|xhigh|max|ultracode>]
cursor [--force] (takes no --model — you pick the model inside Cursor)
dsh [--profile <name>]
Flags for `all`:
frlink all on [--api-key <key>] [--model <id>] [--base-url <url>]
[--force] [--interactive|--non-interactive] [--exclude <ids>]
frlink all off [--force] [--exclude <ids>]
Other commands:
frlink logout Remove the saved API key
frlink check status [--json] Show how every agent is routed
frlink model list [--json] List FriendliAI models and their prices
frlink help Show this help
Examples:
frlink login
frlink claude on Route Claude Code through FriendliAI
frlink all on --exclude cursor Route everything except Cursor
frlink claude off Put Claude Code's own settings back
frlink also answers to `frn` and `friendlilink`.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found