CodeCODE
Tools for working with code
Read and change code, run commands, open terminals. Every edited file is checkpointed by turn, so you can roll back any time.
“Refactor the login module and ping me when all the tests pass.”
Everything around the model, ready out of the box and customizable in depth.
01 · Harness
The model sits in the middle. Every cell around it is something Varin prepares for it: tools, context, execution, collaboration and recovery. Put the same model in, and it can finish longer, more complex tasks.
02 · Ready, and yours
Add an API key and start. Everything else is already in place.
Adjust how each part works without writing code.
Keys stay on your own Host, requests go straight to the providers you configure, and usage is recorded per channel and model, turn by turn.
03 · Four ways to work
Tools for working with code
Read and change code, run commands, open terminals. Every edited file is checkpointed by turn, so you can roll back any time.
“Refactor the login module and ping me when all the tests pass.”
Investigate, compare explanations, develop experiments
Search OpenAlex and Semantic Scholar, read papers and PDFs, and move an experiment forward step by step.
“Find the last two years of papers on this and build a filterable comparison table.”
Documents, data, browser and computer tools
Works directly with Word, Excel and PowerPoint, plus the browser and the apps on your computer.
“Export last month’s orders into an Excel sheet with charts.”
Balanced tools for everyday work
Look things up, write, or build a small interactive tool for the jobs that come up every day.
“Compare these three cameras and make a chart I can tweak.”
04 · Team
The lead agent breaks the task down and assigns the parts: a Worker writes the implementation, a research agent gathers context, a verifier runs the tests. Each member has its own name, avatar and conversation. They message each other, hand over code, and report back to the agent that assigned the work. Follow the discussion in the collaboration panel and step in whenever you like.
05 · Bots
A bot has its own name, personality, model and working directory, keeps several pieces of work moving, and can be given a computer desktop. You can see everything it remembers, correct it, or have it forget. Put it to sleep and its work is suspended; wake it and it picks up where it left off.
06 · Extensions
The Agent, IDE, Research and Bot workbenches, along with the browser, Office, computer control and language servers, are all registered in one extension catalog and use the same contracts as third-party extensions. Any of them can be turned off, and a workbench can be replaced entirely.
varin.builtin.agent-workspacevarin.builtin.ide-workbenchvarin.builtin.research-workbenchvarin.builtin.bot-workspacevarin.builtin.browservarin.builtin.officevarin.builtin.computervarin.builtin.language-serversHover a file on the left to see the matching part of the manifest.
varin.extension.jsonThe contract. Discovery, activation, permission review and tool schemas all read it, so an extension is discoverable without running any code.
package.jsonPlain npm metadata. Its version matches the manifest and it can declare build entry points.
host.jsHost side: tools, model protocols, context algorithms and agent policies. Here it runs brokered, in its own child process.
surface.cjsInterface side: panels, editors, even a whole workbench. Declarative, managed, or isolated in an iframe or worker.
panel.css · panel.svgAssets. Icons, styles or bundled executables, all resolved inside the immutable package.
{ "schemaVersion": 1, "id": "example.agent-authored-panel", "version": "1.0.0", "engines": { "varin": "*" }, "entrypoints": { "host": { "file": "host.js", "mode": "brokered", "activation": ["service-request"] }, "surfaces": [{ "id": "panel", "file": "surface.cjs", "mode": "managed", "supports": ["web", "desktop"], "activation": ["application-startup"] }] }, "provides": { "services": [{ "id": "example.agent-authored-panel.count", "version": 1, "tool": { "name": "authored_text_count", "completion": "result", "operation": "read", "inputSchema": { … } } }] }, "contributions": [{ "id": "example.agent-authored-panel.summary", "kind": "panel", "entrypoint": "panel", "supports": ["web", "desktop"], "placement": { "slot": "workbench.secondary.after", "order": 20 } }] }
import { defineHostExtension, provideTool } from '@varin/extension-sdk'; import manifest from './varin.extension.json' with { type: 'json' }; export default defineHostExtension({ activate(context) { // The same service the manifest declares: discovery and activation read one description provideTool(context, manifest.provides.services[0], async (input, call) => { // Call a built-in tool from the new one; the original receipt is kept intact const memory = await call.tools.invoke({ callId: 'memory', name: 'memory', arguments: input.memory, }); return { memory }; }); }, });
Manifest excerpted from examples/extensions/agent-authored-panel with long schemas elided; host.ts simplified from nested-tools.
The interface holds no privileges. Privileged work stays on the trusted side.
Gets typed callbacks and mount points, nothing more. Swapping a shell or an editor never buys extra permissions.
Tools, language servers, debuggers and test runners live here. A brokered extension has its own process and lifecycle; if it fails, only it is reclaimed.
Pins the exact implementation for every call. Credentials, model requests, execution records and recovery stay here.
varin.models@1varin.context.fragments@1varin.context.budget@1varin.context.compaction@1varin.retrieval.plan@1varin.agent.policy@4Run activity observersHowever many extensions you add, the workbench stays stable and under your control.
Discovery, activation and review all read the same varin.extension.json. An extension can be found, shown and checked before a line of its code runs.
Permissions are approved per version and per layer. An upgrade never inherits new permissions, and revoking takes effect at once.
Everything in an update takes effect at the same moment. If it fails, the previous version stays; nothing is half installed.
Calls already running stay on the implementation they started with. Only new calls use the new version.
Brokered extensions run in their own child process, so a failure only reclaims that extension. If the chosen workbench cannot start, a recovery shell takes over.
An agent can read contracts, write an extension and install it, but a first install is always disabled until you review it.
07 · Control
Every edited file lines up on a timeline, turn by turn. Roll back in one step, and undo the rollback too. Files you changed by hand are never overwritten, and an action with an unclear outcome is never quietly repeated.
08 · Anywhere
Pair with a QR code. Away from your network, an end-to-end encrypted relay carries the connection without seeing your content.
Open source · AGPL-3.0
The code is open source. Your data, models and extensions stay in your hands.