The canonical public source and release lineage for Vinci Code, a terminal coding agent distributed from the MIT-licensed Pi harness.
Sign in with your Vinci account to start. Bring-your-own-provider use is available through /other and does not require a Vinci account. Managed inference is a separate service dependency. The private vinci-code repository contains operations and historical reference, not a second product publisher.
Installation · Quick start · Privacy · Security reports · Contributing · Releases
Preserve Pi provenance, the MIT grants and third-party notices. Code licensing does not grant the Vinci/SimpleDirect trademarks or separately governed artwork rights.
A terminal coding agent with Vinci account sign-in and optional bring-your-own-provider
keys through /other.
Same guard rails either way.
Vinci Code is a distribution of Pi — a thin fork of the
Pi agent harness (MIT) by
Mario Zechner, maintained under
SimpleDirect® by Alpine Pacific Trading Inc. Pi's engine
and packages are kept intact; Vinci adds an additive layer on top. Provenance, including the
exact upstream commit this forked from, is in UPSTREAM.md.
That is one unedited turn on a user's own key — the header reads Anthropic: Claude Haiku 4.5
and /login to connect, because no Vinci account is involved. It ends the way every turn here
ends: with what was actually verified, what was not, and what it cost.
flowchart LR
You["your terminal"] --> Guard
subgraph Local["on your machine — identical in both modes"]
direction LR
Guard[guard] --> Mask[secret redaction] --> Agent[agent loop]
Agent -.-> Receipts[("receipts<br/>checkpoints<br/>review")]
end
Agent -->|BYOK| Provider["your provider<br/>Anthropic · OpenAI · Google · Groq"]
Agent -->|Managed| Gateway["Vinci gateway"] --> Managed["a model Vinci selects"]
style Provider fill:#0A84FF,color:#fff
style Gateway fill:#6C3483,color:#fff
In BYOK your inference key and prompts go straight to your provider. Opening /model
can fetch Vinci's public model details without credentials or conversation content; see
PRIVACY.md. Everything in the grey box runs locally in either mode.
| Direct / BYOK | Managed | |
|---|---|---|
| Vinci account | not required | required |
| Provider | you choose | Vinci selects |
| Your API key | stored locally; sent only to your provider, never to Vinci | you have none |
| Vinci sees your prompts | no | yes, in transit |
| Guard · receipts · checkpoints · review | ✅ | ✅ |
| Capability | Status | What it does |
|---|---|---|
| Command guard | Shipped | Classifies destructive operations and confirms before running them |
| Secret redaction | Shipped | Masks credentials before the terminal, diffs, previews, and /feedback + /issue egress |
| Honest terminal states | Shipped | A run blocked awaiting permission says so, instead of reporting a read-only success |
| Checkpoints | Shipped | Durable recovery points you can roll back to |
| Review / accept | Shipped | A workflow for inspecting and accepting agent output |
| Sandbox | Shipped | Bounded execution for agent-run commands |
| BYOK | Shipped | Any Pi-supported provider, with every guard above still active |
The first row is the one worth seeing rather than taking on trust. Asked to delete a directory
with rm -rf, it names the classification, prints the exact command it would run, and waits —
with no selected. The directory in this capture still had all four files in it afterwards.
Layout, the branch model, and the patch inventory: vinci/README.md.
vinci-code-cli/
├── packages/ # upstream Pi — kept intact
│ ├── ai/ # unified multi-provider LLM API
│ ├── agent/ # agent runtime: tool calling and state
│ ├── coding-agent/ # the coding agent CLI
│ ├── tui/ # terminal UI with differential rendering
│ └── orchestrator/ # multi-agent orchestration
├── vinci/ # the Vinci layer — almost everything Vinci is here
│ ├── extensions/ # guard, receipts, checkpoints, review, crew, …
│ ├── updater/ # signed update client and pinned public key
│ ├── themes/ # vinci-dark, vinci-light
│ ├── assets/ # logomark, lockup, demo captures
│ ├── docs/ # architecture, persistence, verification, environment
│ ├── test/ # integration harness for the Vinci layer
│ └── release-notes/ # mirrored to the public releases repository
├── scripts/ # repo tooling: checks, release, shrinkwrap
└── .github/workflows/ # CI, tests, benchmarks, signed release
Everything under packages/ is upstream Pi. Everything Vinci adds lives in vinci/, plus a
small number of vinci-* files inside packages/. That seam is what keeps upstream syncs
cheap, and it is the first thing to know before contributing.
Extension-by-extension detail, the patch inventory and the branch model → vinci/README.md
| Requirement | Minimum |
|---|---|
| Node | 22.19+ |
| OS | macOS or Linux |
| Sandbox | sandbox-exec (built into macOS) · bubblewrap (Linux) |
| Provider key | Any Pi-supported provider, for BYOK mode |
# From source — the path this repository supports (Node 22.19+)
git clone https://github.com/getsimpledirect/vinci-code-cli
cd vinci-code-cli
npm ci --ignore-scripts && bash vinci/build.sh
./vinci/bin/vinci# Or the signed release (installs the built binary and self-updates)
curl -fsSL https://vinci.getsimpledirect.com/install | shThere is no
vincinpm package. The npm packages in this repo are upstream Pi's (@earendil-works/*, binarypi) — installing those gives you Pi, not Vinci Code.
Install it, run it, and sign in with your Vinci account:
./vinci/bin/vinci
/login # sign in to Vinci in your browser
/model # choose Vinci Auto, Vinci Mezzo, or Vinci ForteBy default, /login opens Vinci browser sign-in directly, and the model surfaces offer Vinci
models. Auto remains the initial model and uses your plan's default. The picker shows live
underlying model details for Mezzo and Forte when available, or a note when details are unavailable offline.
To bring your own provider key, run /other and confirm enabling other providers, then
use /login to choose an authentication method and provider. This opt-in persists globally.
You can also set showOtherProviders: true in settings or VINCI_SHOW_OTHER_PROVIDERS=1.
Vinci entries stay first, followed by a separate group of other providers in /model.
Run /other again to hide them; the environment switch overrides the setting in either direction.
--list-models works before sign-in. Its auth column marks local credential presence as
configured or unconfigured, without validating credentials or contacting providers.
Use --list-models <search> to filter it. Other providers appear after opt-in; the interactive
picker lists models with configured authentication.
BYOK needs no Vinci account. Credentials are stored by Pi in ~/.pi/agent/auth.json.
Vinci Code adds no second credential store, and your provider key is sent only to the provider
you picked, never to Vinci. The coding demo above uses this optional mode.
These are the commands /help lists in a session:
/login Connect to Vinci
/other Add or hide other providers
/logout Disconnect from Vinci
/model Choose which Vinci model to use
/new Start a fresh conversation
/resume Pick up an earlier conversation
/undo Undo the last changes Vinci made to your files
/usage See this task's model calls, tokens, and cost
/security Show Vinci's active confidentiality and sandbox controls
/support Get help and support
/feedback Send private feedback without uploading your transcript
/issue Report a bug or request a feature on the public tracker
/hotkeys Keyboard shortcuts
The Vinci layer adds more on top of these — /review, /checkpoint, /plan, /todo,
/crew and others come from the extensions in vinci/extensions/.
| Variable | Effect |
|---|---|
VINCI_SHOW_OTHER_PROVIDERS |
Other providers are off by default. 1 enables them, 0 hides them; either overrides the saved /other preference. |
VINCI_PROVIDER |
vinci (default) or openrouter |
VINCI_MODEL |
With VINCI_PROVIDER=vinci: auto (default), mezzo, forte, or fortissimo (alias of Forte). auto resolves server-side to your account's class. With openrouter: a full vendor/model id. |
VINCI_NO_SANDBOX=1 |
Disable the sandbox. A development escape hatch — it removes a real safety boundary. |
VINCI_ISSUE_REPO_URL |
Override where /issue files reports |
Full extension list and behaviour → vinci/README.md
| Document | What it covers |
|---|---|
vinci/README.md |
The Vinci layer in detail — extensions, layout, branch model |
vinci/PRIVACY.md |
Exactly what leaves your machine, in each mode |
SECURITY.md |
Reporting a vulnerability; known limits |
UPSTREAM.md |
Fork provenance and how to sync with Pi |
CONTRIBUTING.md |
How to contribute |
SUPPORT.md |
Where to take a bug, a question, or a billing issue |
CODE_OF_CONDUCT.md |
Expected conduct, and how to report a concern |
This public repository's reviewed main is the canonical product source and its protected
vinci-v* release workflow is the sole product publisher. The workflow builds and tests an
unsigned archive, carries those exact bytes into the protected publish job, then signs and
stages the immutable artifact before activating the signed manifest. It binds the tested archive
to the selected source commit and version; the installer verifies the signature and archive hash.
Private operations and signing-key custody remain private and do not make the private product
repository a second publisher.
| What you want | Where it is |
|---|---|
| What version am I running | vinci --version — nothing is pinned in these docs, so it cannot go stale |
| What changed | the releases page, and vinci/release-notes/ |
| The build itself | the installer above, which verifies a signed manifest and its sha256 |
| Bug reports and questions | SUPPORT.md |
Product changes land through the public review lineage. The retained private repository's legacy
mirror/rebase workflow is a separate maintenance model; it is unsupported on public product
main until adapted. See vinci/UPSTREAM.md.
Actively maintained by a small team. Security fixes go to the latest release only — there is no LTS branch. APIs and settings may change before 1.0. Issues and pull requests are welcome.
Security reports: SECURITY.md. Report the format of a missed
credential, never a live key.
Read CONTRIBUTING.md before opening a PR. Most of packages/ is
upstream Pi, so the first question is whether a change belongs here or upstream — sending an
engine fix only to us means Pi's users never get it, and we carry the patch forever.
AGENTS.md carries the engineering rules for this codebase and applies to humans
as well as agents.
The source code is MIT — see LICENSE.
- Upstream Pi is © 2025 Mario Zechner, MIT. That notice is preserved verbatim.
- Vinci's modifications are © 2026 Alpine Pacific Trading Inc., under the same MIT grant.
- Third-party notices:
THIRD_PARTY_NOTICES.md. - "Vinci" and "SimpleDirect" are trademarks of Alpine Pacific Trading Inc.; the code grant
conveys no trademark rights. See
TRADEMARKS.md— if you fork and ship this, rename it.
Original brand artwork retains its recorded provenance; the code license and this README do not
grant additional artwork or trademark rights. See vinci/BRAND.md and
vinci/NOTICE.



