Repository navigation
Releases: ajeetkharel/dev-link-mcp
Releases · ajeetkharel/dev-link-mcp
Release list
v0.3.0
Changed
apply_patchaccepts the patch formats coding models write, not only unified diffs: OpenAI's
*** Begin Patchformat (ChatGPT, Codex, Cline), SEARCH/REPLACE blocks (aider, Cline, Roo
Code), unified diffs with bare@@hunk headers, and any of these wrapped in a markdown fence.
Unified diffs with numbered hunks still go throughgit apply.apply_patchstripdefaults to 1 only when the diff paths start witha/andb/, and to 0
otherwise, so--- file/+++ filediffs apply without setting it.
v0.2.0
Added
tunnel.ngrok_url(--ngrok-url): with--tunnel, publish through ngrok on your free fixed
domain instead of a Cloudflare quick tunnel. The token is kept per folder in the state dir, so
the public URL stays the same across restarts and ChatGPT or Grok need no re-adding.
--new-tokenreplaces the kept token.- The install script asks whether to install cloudflared, ngrok or both, and for ngrok adds the
authtoken and writes the domain to the user config.
Changed
- The commands that
dev-link startsuggests leave out the folder when you are already in it.
Fixed
dev-link start,dev-link statusand theservebanner line up their labels when they show
public URLs.
v0.1.0
First public release.
Added
- An MCP server (streamable HTTP) that gives a coding agent one folder to work in: shell
commands, files, search, background processes, project build/test/lint commands with parsed
test results, code outlines, HTTP, data inspection, checkpoints and a task list. Browser tools
(Playwright) and code tools (tree-sitter) are the[browser]and[code]extras;[all]
installs both. Docker tools are opt-in with--enable docker. - Commands run in a bubblewrap sandbox on Linux; the server refuses to start when bubblewrap
cannot run, and--no-sandboxgives full user access instead. Optional memory and process
limits run each command in a systemd user scope. - The
dev-linkCLI:serve,start,stop,restart,status,url,dashboard,logs,
doctor,config,toolsandinstall-browser. Each folder gets its own server;--tunnel
publishes it through a Cloudflare quick tunnel. The same CLI is also installed asdev-link-mcp,
souvx dev-link-mcpworks. - A live dashboard of tool calls, processes, tasks and workspace files, and an audit log of every
call in SQLite and JSONL outside the workspace, pruned afteraudit.retention_daysat startup
and once a day. - Layered config: defaults,
~/.config/dev-link/config.yaml,--config FILE,DEV_LINK_*
variables and flags, with per-group settings undergroups.<name>. - Tool group plugins through the
dev_link_mcp.tool_groupsentry point, loaded only when
tools.enablednames them. The plugin API and config format are provisional. mcpis pinned below 3, because the tool schema trim relies on SDK internals.- macOS is experimental: it runs only with
--no-sandboxand is not tested in CI yet.
Security
- With the network off, the HTTP tools refuse every request, the browser tools open only
about:blank, pages load onlydata:,blob:andabout:resources and WebRTC is off, and
the process tools refuse to wait for a port. None of them can reach the host's loopback. - With the network off, containers run with
--network none, compose services share internal
networks isolated from the host (Docker 28 or newer), and published ports, image pulls and
image builds are refused. compose refuses volumes whosedriver_optstype is anything but
none,bindortmpfs, so the daemon cannot mount network shares for the agent. - The token is replaced with
***in the audit log, background process logs,server.log,
tunnel.logand server log lines. The startup banner anddev-link startshow it only when
their output is a terminal. A configured token is dropped withauth: none. - The state dir, which holds the audit log, is made private (0700) even when it already exists.
The server refuses to start, anddev-link doctorfails, when the sandbox would mount the state
dir or when aro_pathsorrw_pathsentry lies inside a folder the agent can write. - If the server is killed or crashes, a small guard process kills cloudflared and
--no-sandbox
commands. A--tunnelserver shuts down with exit status 1 when cloudflared exits, instead of
running on with a dead public URL.