open source · MIT self-hosted VS Code

The coding assistant that never leaves your network.

Autocomplete, chat, inline edit and code review in VS Code, on models you run. Any OpenAI-compatible server, on a laptop, in your data centre, or pooled from the team's own computers. No account, nothing phones home.

install for VS Code try the live demo

Free for individuals and teams of five. Team seats from $6 a month. Pricing.

your network nothing leaves
debounce.ts completion.ts twinny
  1. export function debounce(fn: Fn, wait = 300) {
  2. let timer: Timer | undefined
  3. return (...args: unknown[]) => {
</> twinny fim · coder-7b · local chat · gateway :8765 TypeScript
  • no telemetry
  • no account
  • MIT licensed
  • air-gapped
  • any OpenAI-compatible server
  • autocomplete
  • chat
  • inline edit
  • code review
  • workspace index
  • terminal
  • one gateway for the team
  • pooled computers
  • a key per developer
  • recording off by default
  • nothing phones home
features

Everything you expect from an assistant. Nothing you don't.

Small, explicit features in the editor. Every one is a plain VS Code command you can rebind.

01

Autocomplete

Fill-in-the-middle suggestions as you type, streamed as ghost text and cut off at a sensible end. Tuned to work well with a 7B model.

docs →
02

Chat that knows the repo

Type @ to attach a file, a symbol, the problems panel, the git diff, the terminal, or a search of the workspace index.

docs →
03

Inline edit

Ctrl+I, describe the change, review it as a diff in the editor. Accept or reject per hunk. Nothing is kept until you say so.

docs →
04

Workspace index

A hybrid keyword and vector index of the workspace, reranked before it reaches the prompt and updated on save.

docs →
05

Code review

Review the working tree, a branch against its base, or a GitHub pull request. The review lands in chat so you can ask follow-ups.

docs →
06

Terminal

Write a command from a description, shown before it runs. When one fails, twinny finds the file and line and offers the fix as a diff.

docs →
getting started

Three steps. No account.

There is nothing to sign in to because there is nothing on our side. Quick start.

  1. 01

    Install the extension

    From the VS Code marketplace. No sign-up, no key, no prompt to send telemetry.

    $ code --install-extension rjmacarthy.twinny
  2. 02

    Point it at a server

    On first run twinny finds inference servers on localhost and offers them. Or paste any OpenAI-compatible endpoint.

    provider http://localhost:8080/v1 ✓ connected
  3. 03

    Type

    Suggestions appear as you pause. Open the sidebar to chat, press Ctrl+I to edit in place.

    </> twinny · ready
teams · twinny-server

One gateway in your data centre. The whole team behind it.

twinny-server sits between developers and your inference servers, or the team's own computers. Keys, usage, policy and an admin page, in one process you run.

developer laptops VS Code + twinny personal key
HTTPS
your network twinny-server keys · usage · policy · admin
private
your inference servers Any OpenAI-compatible backend on-prem GPUs, a private cloud, or teammates' computers
quick start bash
# on the machine with the models
$ npx twinny-server quickstart
wrote twinny.gateway.json
admin key (shown once): tsk_5f3a…9c
listening on 127.0.0.1:8765 · 3 aliases · 1 key
backend gpu-1 ok · gpu-2 ok · team 3 sharing
admin: http://127.0.0.1:8765/admin

# or the container: ghcr.io/twinnydotdev/twinny-server
# then People → invite: one link per developer, opens VS Code
live admin page package source
twinny-server · admin 2 backends ok · 3 sharing
requests · 7d4,000
developers5 / 5 seats
failures3
p50 latency412ms
usage by developer
  • alice 1,284
  • bo 968
  • chen 812
  • dana 640
  • eli 296
coderchatembed
team pool

No GPU server yet? Pool the computers the team already has.

A developer flips Share this computer in VS Code. Their extension connects out to the gateway and serves the models on their local server to the rest of the team, least loaded first. No port to open, no firewall rule, no extra seat.

  • Prompts stream through the sharer's machine and are not stored there.
  • Every developer is told which models may run on a teammate's computer.
  • A sharer going offline fails over to the next machine with the model.
admin · sharing now 3 computers
whomodelsbusyserved
alice@desktop coder · embed 1 / 2 312
bo@mbp coder 0 / 2 188
chen@lab-1 coder · chat 2 / 2 540
  • A key per developer

    Requested from VS Code, approved with a short code, stored as a hash, revoked live. Offboarding is one click.

  • Usage per person

    Requests, failures and tokens by developer, model and the machine that served them. Never the content.

  • Team defaults and policy

    Set the models once. Restrict which providers developers may add.

  • Any backend, live

    Swap the model on the admin page. The next request uses it.

  • Pooled computers, under your control

    Only a named key can share. Sharers see one line of consent, admins see who serves what and can disconnect a machine.

  • Recording, if you want it

    Keep prompts and replies on your gateway for audit, review and training data. Off by default, disclosed to every developer.

open the live demo teams documentation Free for five developers, pooling included. The licence only changes the seat count and switches on policy and recording.
security

Built for code that cannot leave the building.

Banks, exchanges, defence, healthcare, anyone shipping under NDA. The answers your security review will ask for, in one place.

the whole request log~/.twinny/server/usage/
timecapkeyaliasresulttook
10:12:03 fim alice coder ok 412ms
10:12:04 chat bo chat ok 2.1s
10:12:06 fim alice coder ok 388ms
10:12:09 embed chen embed ok 61ms
10:12:11 chat dana chat timeout 30.0s
10:12:12 fim eli coder ok 402ms
Every field, by default. Content recording is a separate switch, and it is off.
hosted assistant vs twinny
hostedtwinny
Where prompts goA vendor’s cloudYour own servers
Whose GPUsThe vendor’sYours, or pooled from the team
Who picks the modelThe vendorYou
TelemetryOn by defaultNone. There is no endpoint.
Air-gappedNoYes
Per seat, per monthTypically $19–39$0 to $10
Does anything leave our network?
No. The extension talks to the server you configure and the gateway talks to its backends. No update check, no crash reporter, no usage ping, no licence check. It runs air-gapped: Node 18 and your inference server are the whole dependency list.
Is pooling teammates’ computers safe?
The sharer connects out to the gateway with their own key; nothing dials in. Prompts stream through the machine and are not stored there. Developers are told which models may run on a teammate’s computer, and admins can disconnect any of them.
What is recorded?
By default, metadata: time, capability, key, alias, outcome, duration. Content is a separate switch per route, off unless an admin turns it on, kept on your gateway, disclosed to developers and deleted after 90 days.
How are keys handled?
One per developer, shown once, stored as a hash, revoked live. Requests name a model alias; they cannot carry a URL, credential or path.
Can we control what developers use?
Yes. Policy restricts which provider kinds may be added and locks the team models, enforced inside each developer’s VS Code.
Can our security team read the code?
All of it. The extension and the gateway are one MIT repository. The private piece is the licence issuer, and it only signs seat counts.

Every claim above is checkable in the source.

pricing

Per seat, per year. No quote, no call.

A seat is an active key on your gateway. Revoke a key and the seat is free again. Everything in the extension and the gateway is in every tier; you pay for seats, policy, recording and support. Where the usual tools ask $19 a seat, twinny asks $6.

free
$0
forever, not a trial · up to 5 seats on a gateway
  • the whole extension, MIT
  • twinny-server: admin page, usage per developer, keys, sign-in codes
  • any provider, local or hosted, configured live
  • pool teammates' computers as a backend
  • community support
install see it live
team your size
$6/ seat / month
billed yearly, $72 for each seat beyond the free 5
  • everything in free
  • your first 5 seats stay free; buy only the ones beyond them
  • policy: allowed providers, locked team models
  • recording: keep prompts and replies on your gateway for audit and training export
  • email support
  • a signed token, installed in a minute, checked locally; the gateway never calls home
buy seats
enterprise
$10/ seat / month
billed yearly · from 50 seats
  • everything in team
  • one organisation licence covering any number of gateways
  • priority support with a named contact
  • invoice or purchase-order billing
contact us
20
free up to 5 seats
team $1,080/ year
enterprise $6,000/ year at 50 seats

Pay by card. The licence token appears on your licence page and by email; paste it into the admin page. Renewals reissue the same licence. Prices in USD, issued by rjmacarthy.xyz. How licensing works.

contact

Enterprise, or anything else.

50 seats or more, an invoice or a purchase order, a named contact. Say who you are and how many developers; you hear back within one business day.

Nothing is stored. The message goes by email to the people who make twinny.

Install it. Point it at a model. Keep your code where it is.