1 # siGit Code
2
3 <p align="center">
4 <a href="https://crates.io/crates/sigit"><img src="https://img.shields.io/crates/v/sigit?style=flat-square&labelColor=17211D&color=235843" alt="Crates.io"></a>
5 <a href="https://pypi.org/project/sigit-code/"><img src="https://img.shields.io/pypi/v/sigit-code?style=flat-square&labelColor=17211D&color=235843" alt="PyPI"></a>
6 <a href="https://www.npmjs.com/package/@getsigit/sigit"><img src="https://img.shields.io/npm/v/@getsigit/sigit?style=flat-square&labelColor=17211D&color=235843" alt="npm"></a>
7 <a href="https://smbcloud.xyz"><img src="https://img.shields.io/badge/smbcloud.xyz-235843?style=flat-square&labelColor=17211D" alt="Website"></a>
8 <a href="https://github.com/getsigit/sigit/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-235843?style=flat-square&labelColor=17211D" alt="License"></a>
9 </p>
10
11 siGit Code is the local agent runtime for **siGit Factory**. It runs on your machine by default,
12 with optional cloud inference and remote automation when you choose them.
13
14 Its home is [code.sigit.si](https://code.sigit.si). You can run it yourself, as below, or use the hosted version (siGit Code Cloud) there if you would rather not run a model locally. [sigit.si](https://sigit.si) is Git hosting built for AI workflows.
15
16 It works in any codebase. In smbCloud repos it is more useful out of the box because it already understands the Rust workspace layout, deploy flows, auth boundaries, and GresIQ.
17
18 You can use it in two ways:
19
20 - **ACP mode:** Zed or another ACP-compatible editor starts it over stdio with the `--acp` argument
21 - **Terminal mode:** run `sigit` for the interactive chat UI
22
23 Every ACP client must pass `--acp`. It takes no other arguments, and it is what
24 tells the binary to speak the Agent Client Protocol instead of opening the
25 terminal UI.
26
27 | Platform | ACP mode | Terminal mode |
28 |----------|----------|---------------|
29 | macOS | ✓ | ✓ |
30 | Linux | ✓ | ✓ |
31 | Windows | ✓ | not yet |
32
33 ## Install
34
35 ```sh
36 cargo install sigit
37 ```
38
39 | Method | Command |
40 |--------|---------|
41 | Homebrew | `brew tap getsigit/tap && brew trust --tap getsigit/tap && brew install sigit` |
42 | pip | `pip install sigit-code` |
43 | uv | `uvx --from sigit-code sigit` |
44 | npm | `npm install -g @getsigit/sigit` |
45 | NuGet | `dotnet tool install --global SiGit.Code` |
46 | winget | `winget install smbCloud.siGitCode` |
47 | Scoop | `scoop bucket add getsigit https://github.com/getsigit/scoop-bucket && scoop install sigit` |
48 | AUR | `yay -S sigit-bin` |
49 | Debian/Ubuntu | download the `.deb` from [releases](https://github.com/getsigit/sigit/releases), then `sudo dpkg -i sigit_*.deb` |
50 | Fedora/RHEL | download the `.rpm` from [releases](https://github.com/getsigit/sigit/releases), then `sudo rpm -i sigit-*.rpm` |
51
52 ## First run
53
54 The first launch downloads a GGUF model from Hugging Face. Expect roughly 1 to 2 GB, depending on the model. After that, loads come from disk and are much faster.
55
56 On macOS, siGit Code shares its model cache with the desktop app through an App Group container. If the desktop app already downloaded the model, the CLI reuses it.
57
58 ## Zed setup
59
60 Add this to `~/.config/zed/settings.json`:
61
62 ```json
63 {
64 "agent_servers": {
65 "siGit Code": {
66 "type": "custom",
67 "command": "/absolute/path/to/sigit",
68 "args": ["--acp"]
69 }
70 }
71 }
72 ```
73
74 Use the full absolute path. `~` does not expand here.
75
76 ## Xcode custom agent
77
78 In Xcode, open **Settings > Intelligence > Agents**, add a custom agent, and set:
79
80 - **Executable:** the absolute path to `sigit`
81 - **Arguments:** `--acp`
82
83 In Xcode the `--acp` mode also loads the selected on-device model on the first
84 prompt, so you do not need to send `/load` from the Xcode chat.
85
86 To let siGit use Xcode's build, test, and project tools, enable **Allow external
87 agents to use Xcode tools** in Xcode's Intelligence settings, keep the project
88 open, and add this to `~/.config/sigit/mcp.toml`:
89
90 ```toml
91 [[server]]
92 name = "xcode"
93 command = "xcrun"
94 args = ["mcpbridge"]
95 ```
96
97 ## VS Code
98
99 ### With siGit Code Extension
100
101 Install from the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=getsigit.sigit-code).
102
103 ```jsonc
104 {
105 "sigit.agents": {
106 "sigit": {
107 "name": "siGit (on-device)",
108 "command": "sigit",
109 "args": ["--acp"],
110 "env": {}
111 },
112 },
113 "sigit.agent.default": "sigit"
114 }
115 ```
116
117 ### With ACP Client
118
119 Install [ACP Client](https://marketplace.visualstudio.com/items?itemName=formulahendry.acp-client), then add:
120
121 ```json
122 {
123 "acp.agents": {
124 "siGit Code": {
125 "command": "sigit",
126 "args": ["--acp"],
127 "env": {}
128 }
129 }
130 }
131 ```
132
133 ## ACP support
134
135 siGit Code speaks [Agent Client Protocol](https://agentclientprotocol.com) v1 over stdio.
136 As of 1.7.0 it implements the whole stable v1 surface an agent can offer:
137
138 | Area | What is supported |
139 |------|-------------------|
140 | Sessions | `session/new`, `load`, `resume`, `fork`, `list` (paged, with a `cwd` filter), `close`, `delete`, and multi-root projects through `additionalDirectories` |
141 | Prompts | Text, images, audio, embedded resources and resource links. Stop reasons `end_turn`, `max_tokens`, `max_turn_requests`, `refusal` and `cancelled` |
142 | Updates | Message and thought chunks with a `messageId`, tool calls with diffs, locations and embedded terminals, plans, `usage_update`, `session_info_update`, slash commands |
143 | Cancellation | `session/cancel`, and `$/cancel_request` for a prompt or a sign-in |
144 | Permissions | `session/request_permission` with allow or deny, once or for the session. Manual, Auto and Plan as config options and as session modes |
145 | Client features | `fs/read_text_file` and `fs/write_text_file`, `terminal/*`, URL-mode elicitation and boolean config options, each used only when the client advertises it |
146 | MCP | stdio and Streamable HTTP servers passed in `mcpServers` |
147 | Auth | `authenticate` (browser sign-in) and `logout` |
148
149 `session/fork` is still marked unstable in the protocol. Draft v2 is not enabled.
150
151 ## Terminal mode
152
153 Run `sigit` in a terminal and you get the same model and system prompt as the editor integration, just in a full-screen chat UI.
154
155 Terminal mode currently needs Unix terminal behavior, so it works on macOS and Linux only.
156
157 ## Headless and CI mode
158
159 Use `sigit run` to execute the same agent from scripts, CI, or another siGit Factory client:
160
161 ```sh
162 sigit run "Review this repository and run the focused tests" --cwd .
163 ```
164
165 Every run receives a durable session ID. The ID is printed to stderr in text mode and included
166 in every event in JSONL mode. Resume the same conversation from a later command—or import it in
167 an ACP client—by passing that ID:
168
169 ```sh
170 sigit run "Continue with the next issue" --resume <session-id>
171 ```
172
173 For automation, JSONL output provides session, assistant-delta, tool-call, tool-result, result,
174 and error events on stdout. Logs remain on stderr.
175
176 ```sh
177 sigit run "Run the checks" --output jsonl --allow-tool run_command
178 ```
179
180 Mutating tools still follow siGit's permission policy. Because a headless run cannot answer an
181 interactive permission prompt, approve only the tools the run needs with repeatable
182 `--allow-tool` flags. The legacy `sigit -p "<prompt>"` form remains supported. See the
183 [headless execution reference](docs/headless.md) for the event contract and exit codes.
184
185 ## Telemetry
186
187 siGit Code itself collects no usage analytics. On-device models run on
188 [Onde Inference](https://ondeinference.com), and Onde can report model timing to its own
189 dashboard. That reporting only switches on in builds where Onde's credentials were embedded at
190 compile time. When it is on, siGit Code sends:
191
192 - one event when an on-device model finishes loading: the model's Hugging Face repo ID, its
193 display name, and how long the load took;
194 - one event per on-device response: the model ID, a per-process request ID, the response time,
195 the time to first token when it was measured, and whether it succeeded, errored, or was
196 cancelled.
197
198 Nothing from your conversation goes with them: no prompts, responses, file paths, or code.
199 siGit Code doesn't set a machine identifier, so every install reports as the same
200 `onde-unknown` edge, and it sends no location. Models you run through siGit Code Cloud or your
201 own endpoint send no Onde events.
202
203 To see whether your build reports, load an on-device model and check the log for
204 `ChatEngine: pulse telemetry enabled` or `ChatEngine: pulse telemetry disabled`. siGit Code logs
205 to stderr, which an editor shows in its agent log. Terminal mode writes it to
206 `$TMPDIR/sigit.log`.
207
208 To turn it off, set `ONDE_DISABLE_PULSE=1` in the environment siGit Code runs in. For an
209 editor, put it in the agent's `env` block:
210
211 ```json
212 "env": { "ONDE_DISABLE_PULSE": "1" }
213 ```
214
215 ## Platform support
216
217 | Platform | Architecture |
218 |----------|-------------|
219 | macOS | arm64, x64 |
220 | Linux (glibc) | arm64, x64 |
221 | Windows | arm64, x64 |
222
223 ## License
224
225 [Apache 2.0](https://github.com/getsigit/sigit/blob/main/LICENSE)
226
227 ## Distribution
228
229 [Splitfire AB](https://5mb.app).
230
231 ## Copyright
232
233 © 2026 PT Sigit Mitra Bangun ([siGit Code & Deploy](https://sigit.si)).