Changelog

1.5.7

What changed

  • @smbcloud/sigit gets releases again. The npm scope moved to @getsigit in 1.5.5 and the old package was left sitting on the registry at 1.5.2, so an install made before the rename went quiet — npm update had nothing to give it and nothing said why. All seven packages now publish under both scopes from the same build, so @smbcloud/sigit is a full install again rather than a stub, with its own platform binaries and no dependency on the new scope. It prints a line on stderr saying where the package moved to; SIGIT_SUPPRESS_SCOPE_NOTICE=1 turns that off. This is a migration path, not a second home: @getsigit/sigit is what the docs, the Homebrew tap, and the ACP registry entry point at, and it is the name to move to
  • Multi-root projects now work in the editor. When a client opens several directories in one project, ACP sends the extra ones as additionalDirectories — but only to an agent that says it wants them, which siGit never did, so Zed kept the first root and showed a banner saying multi-root workspaces were unsupported. The capability is now advertised at initialize, and the directories that arrive are no longer logged and thrown away. All the roots are now part of the session: the model is told about each one, every root's AGENTS.md / CLAUDE.md is loaded, and skills, slash commands, and subagent types are discovered from all of them (primary root first, so it still wins name collisions). /status lists the roots when there is more than one, and headless runs take the same thing as repeatable --add-dir <dir> flags. MCP servers are the exception: discovery happens once at startup, before a session exists, so a second root's .sigit/mcp.toml is not picked up

Fixed

  • A shell command can no longer wedge the editor session. Tool commands inherited siGit's own stdin, which in ACP mode is the JSON-RPC pipe from the editor. A command that read stdin — a signing passphrase prompt, a pager, a git credential ask — blocked on it and consumed the client's next request out of the pipe, so nothing typed afterwards ever reached the agent and the session stayed dead past the command timeout. Commands, hooks, and the co-author git helpers now run with stdin closed, so a command that wants input gets EOF and reports an error instead
  • A command that prints a lot no longer stalls for two minutes. run_command waited for the command to exit before reading its output, so anything past the pipe buffer (a build, a verbose test run) blocked writing while siGit blocked waiting, until the 120-second timeout killed it. Output is now drained while the command runs
  • The command timeout now stops the whole command. It killed only the shell, leaving anything that shell had started running and unreaped; it now kills the process group
  • A refused turn now shows the endpoint's own message. siGit pasted the status line and the raw JSON body into the editor's error banner, so a billing or allowance message arrived wrapped in endpoint returned 429 Too Many Requests: {"error":{"message":…. The message the endpoint wrote is what the banner shows now; the status is only used when there is no message to show
  • An error that arrives mid-stream is no longer silent. An endpoint that fails after the response is already open reports it as a frame in the stream. That frame carries no choices, so siGit parsed it as an empty chunk and skipped it, and the turn ended as though the model had answered with nothing

1.5.6

What changed

  • Switching models mid-conversation no longer restarts it. Both switching to a local GGUF model and picking a different cloud tier now carry the live conversation history across, repairing any half-finished tool call so strict OpenAI-compatible endpoints don't reject the session
  • Long-running tools now show progress in ACP clients. Synchronous tools (shell commands, file operations, read_website, ...) run on a blocking thread pool instead of the ACP connection's own task, so a slow command's in_progress update reaches the client — and Zed's spinner — while the command is still running instead of arriving with the result
  • Text from consecutive tool rounds no longer runs together. ACP and headless clients concatenate consecutive message chunks, so a reply that continued after a tool call used to glue onto the previous round's last sentence with no space. A blank line now opens the next round's text
  • New onde-cloud model tiers. The model picker (/models in the TUI, the config panel in editors) now offers five additional siGit Code Cloud tiers — flux, apex, aura, orbit, and nova — alongside the existing Fast, Balanced, Large, Mini, Air, Pro, and KKK options. The tier list mirrors onde-cloud's router catalogue, so all three sides (the picker, the router, and the cloud catalogue) have to be updated together when a tier is added
  • MCP Registry listing moved to getsigit/si. The server.json manifest and its release-mcp-registry.yml publish workflow now live in the getsigit/si repo alongside the si CLI's other code, since the registry entry describes the si platform rather than the coding agent

1.5.5

A distribution release. siGit Code itself is unchanged. What moved is how it reaches you on npm and on Windows.

What changed

  • The npm package is now @getsigit/sigit. The six platform packages moved with it. @smbcloud/sigit stays on the registry but stops receiving updates, so upgrading means switching names: npm uninstall -g @smbcloud/sigit && npm install -g @getsigit/sigit. The old package had been stuck at 1.5.2, so this picks up 1.5.3 and 1.5.4 as well.
  • npm publishes over OIDC. Every @getsigit/* package has a trusted publisher pointing at the release workflow, so no npm token is stored in the repository. The release workflow moves to Node 22, which trusted publishing requires.
  • winget releases actually go out. The workflow could only update a package already present in microsoft/winget-pkgs, and siGit Code had never been submitted there, so every dispatch failed. It now submits the package the first time and updates it on later releases. The identifier is getSigit.siGitCode.

1.5.4

  • CI: nfpm config expanded to include package version and binary path

1.5.3

Adds browser-based sign-in, expands distribution channels to Windows (winget, Scoop), Linux (AUR, deb, rpm), and .NET (NuGet), gives ACP clients live visibility into tool activity, adds the KKK and Moonshot AI cloud tiers, and fixes the co-authored-by trailer email.

What changed

  • Browser sign-in: sigit login now opens a browser OAuth flow (PKCE S256 against the siGit Code Cloud authorization server) so you can sign in without a password. A loopback listener catches the redirect automatically; a paste-back fallback handles environments where a loopback isn't reachable. --paste forces the paste path, --password keeps the old email/password prompt. Zed's "Sign in to siGit Code" button uses the loopback path via ACP authenticate
  • New release channels: siGit Code is now published to winget (getsigit.siGitCode), Scoop (getsigit/scoop-bucket), the AUR (sigit-bin), and as .deb/.rpm packages alongside the existing Homebrew, npm, PyPI, crates.io, and NuGet channels
  • NuGet .NET tool: dotnet tool install --global SiGit.Code now works on Windows, macOS, and Linux — the package bundles all six platform binaries and a managed shim that execs the right one, leaving stdin/stdout/stderr unredirected so TUI vs ACP mode detection still works
  • New cloud tiers: the model picker (/models in the TUI, the config panel in Zed) now offers the onde-kkk (KKK) and Moonshot AI (oke) tiers alongside the existing Fast, Balanced, Large, Mini, Air, and Pro options
  • ACP tool visibility: the agent loop now emits ToolCall(InProgress) before each tool runs and ToolCallUpdate(Completed/Failed) after it returns, so clients like Zed gain live visibility into tool activity between inference rounds. tool_choice: "auto" is also sent explicitly whenever tools are present, fixing models that describe actions in prose rather than issuing a tool call when the field is absent
  • Malformed tool argument logging: invalid tool argument JSON is now logged at three sites (TUI pretty-printer, ACP tool-call event, permission request) instead of silently falling back to a string value, making malformed payloads visible in logs while preserving backward-compatible behaviour
  • Co-authored-by trailer fix: the Co-Authored-By trailer email was updated to noreply@sigit.si (platform-neutral); the commit attribution check was tightened to use idiomatic ownership
  • NuGet trusted publishing: the NuGet release workflow now exchanges a GitHub OIDC token for a short-lived NuGet API key (via NuGet/login) instead of relying on a long-lived NUGET_API_KEY secret, so there is no stored credential to rotate or leak
  • AUR dispatch temporarily disabled: the AUR release workflow is no longer dispatched from release-github while new AUR account registration is closed; the sigit-bin channel returns once registration reopens
  • Legal and branding copy updated

1.5.2

Brings the latest siGit Code Cloud tiers to the picker and aligns the MCP registry metadata with the server release.

What changed

  • /models now lists the Pro, Air, and Mini siGit Code Cloud tiers alongside Fast, Balanced, and Large
  • Updated the MCP registry manifest to version 1.2.5, matching the siGit Code Cloud server release
  • Updated the Agent Client Protocol SDK to the latest v1 release

1.5.1

Makes siGit Code work as an Xcode custom agent, and updates the Onde SDK.

What changed

  • Xcode can now run siGit Code as a custom agent. Point it at the binary with --acp as the argument, and that explicit mode loads the selected on-device model on the first prompt, since Xcode's chat has no equivalent of /load. The README covers the setup, including wiring up xcrun mcpbridge in mcp.toml so the agent can use Xcode's build, test, and project tools
  • MCP calls to the xcode server time out after 30 seconds instead of 120, so a request Xcode cannot service no longer leaves the prompt looking busy for two minutes. String JSON-RPC ids from the bridge are handled too
  • The agent stops repeating itself: a tool call made three times with identical arguments now forces a text reply instead of looping
  • Onde SDK bumped to 1.2.2
  • The registry listing in server.json matches what sigit.si publishes

1.5.0

Opens the agent up to user extension: lifecycle hooks, custom slash commands, and configurable subagent types. Also adds web search, a Repo tab in the TUI, and a baked-in smbCloud MCP server.

What changed

  • Hooks let you run shell commands at three points in the agent's lifecycle: session_start, pre_tool_use, and post_tool_use, configured under [hooks] in settings.toml. Commands get context through variable substitution ({cwd}, {tool_name}, {tool_result_len}) and run in the session working directory. A hook that fails is logged and the session continues; a hook that hangs is killed on a timeout, along with its whole process group
  • User-defined slash commands: drop a Markdown file in .sigit/commands/ or .claude/commands/ (or the personal $SIGIT_CONFIG_DIR/commands/ and ~/.claude/commands/) with optional description and argument-hint frontmatter, and the body becomes a prompt template. $ARGUMENTS takes the whole argument string and $1..$9 the positional words. A subdirectory namespaces the command with :, so .sigit/commands/git/commit.md becomes /git:commit. They run as ordinary agent turns through the usual tools and permission checks, and are advertised to ACP clients like Zed. /commands lists what was discovered
  • Configurable subagent types for the task tool: a Markdown file in .sigit/agents/ or .claude/agents/ with name, description, and an optional tools: allow-list, whose body becomes that subagent's system prompt. Pass its name as subagent_type to swap the prompt in. The tools: list can only narrow the subagent's read-only ceiling, never widen it, so a config file cannot grant itself edit_file or run_command and route around the permission system. /agents lists the discovered types
  • New web_search tool, backed by the Brave-Search-backed search on siGit Code Cloud's MCP server. It is offered only when you are signed in, and it is classified read-only, so searching never triggers a permission prompt
  • The TUI gains a Repo tab, shown when the session's origin remote points at the sigit.si host. It lists issues and pull requests fetched through the official MCP server: Up and Down select, Enter opens a scrollable detail, i, p, Left and Right switch sections, r refreshes. The tab is hidden and skipped in the cycle for any other remote
  • The smbCloud CLI's stdio MCP server (smb --mcp) is now baked in, so smbCloud project and deployment tools work with no mcp.toml setup. It is added only when the smb binary is on PATH, its read-only tools (me, deployments, project_list, project_show) skip permission prompts, and you can opt out with smbcloud = false in mcp.toml or SIGIT_MCP_SMBCLOUD=off
  • siGit Code Cloud's MCP server is now listed in the public MCP Registry as si.sigit/sigit, published from server.json at the repository root

Fixes

  • An explicit deny rule now applies to read-only first-party tools instead of being skipped
  • A subagent type whose tools: list resolves to an empty set is rejected rather than producing a subagent with no tools
  • Command templates render in a single substitution pass, so an argument that contains something like $1 is no longer re-substituted
  • Frontmatter is stripped with the same leniency it is parsed with
  • The Repo tab's detail view no longer shows stale data after a refresh

1.4.1

Two small fixes: correct co-author attribution and a Homebrew tap fix.

What changed

  • The Co-Authored-By trailer siGit Code adds to commits now uses the GitHub noreply address for the sigitc account instead of sigit@sigit.si, so GitHub reliably attributes co-authored commits to the siGit Code profile
  • Fixed the Homebrew tap install docs to trust the tap with brew trust instead of a brew tap --force flag

1.4.0

Adds a headless one-shot mode, fine-grained permission rules, stdio transport for MCP servers, an /init command, and a set of TUI upgrades: tabs, a live thinking display, and collapsible tool calls.

What changed

  • New headless mode: sigit -p "prompt" runs one agent turn with tools and exits — 0 on a completed turn, 1 on inference errors, 2 on bad invocations. Assistant text streams to stdout while logs and tool progress stay on stderr; --cwd sets the working directory and --quiet prints only the final message. Nobody can answer a permission prompt in a headless run, so ask collapses to a denial: grant tools for the run with --allow-tool, block them with --deny-tool, or use SIGIT_PERMISSIONS=allow
  • Permission rules make autonomy granular: [permissions.rules] in settings.toml holds ordered allow and deny lists of tool_name(pattern) entries, e.g. run_command(git *) or edit_file(src/*). Patterns match the command string for run_command and the path for file tools; deny always beats allow, and unparseable patterns fail closed, so a bad rule can only narrow access. Always-allow on a run_command prompt now grants that command family (its first two tokens), not the whole shell
  • The MCP client speaks stdio: mcp.toml server entries can give a command, args, and an env map instead of a url, so the stdio-first majority of published MCP servers plugs in. Same handshake, timeouts, tool namespacing, and output caps as HTTP; /mcp shows the command line for stdio servers
  • New /init command (TUI and ACP): runs a normal agent turn that explores the repository and writes an AGENTS.md — or improves an existing AGENTS.md/CLAUDE.md in place — going through the ordinary tools and permission checks
  • The TUI gains tabs, cycled with the Tab key: Session is the chat, History lists saved sessions (restore with Enter, delete with a confirmed double-d, refresh with r), and Cloud shows the signed-in account, inference mode, current model and engine state, permission policy, and config dir, with a live Local Inference toggle
  • The TUI shows model thinking: while a reply streams, the last three lines of the reasoning appear live under the spinner, dim and italic; finished replies collapse to a one-line indicator with the line count, and /thinking expands the full reasoning block above each reply. Display only — nothing changes in what is sent to the model, saved to sessions, or streamed over ACP
  • Tool calls in the TUI transcript collapse to single dim title lines (the command for run_command, the path for file tools, the pattern for search and glob); /tools expands every entry to show the pretty-printed arguments and a capped tail of the result. Permission prompts keep showing the full command, and the model still receives full outputs
  • When AGENTS.md and CLAUDE.md sit in the same directory, the instructions loader now prefers AGENTS.md, so shared content is injected once

1.3.2

Adds a tool permission system with plan mode, durable sessions with context compaction, background command execution, a subagent research tool, and commit co-author attribution.

What changed

  • Every tool call now passes a permission policy before executing. Read-only tools always run; mutating tools (and all MCP or unknown tools) are governed by, in order: plan mode, session grants, per-tool overrides, and a default mode from [permissions] in settings.toml (allow/ask/deny, default ask). On ask, editors get a native ACP permission dialog (allow once / allow for this session / deny) and the TUI pauses on a y/a/n prompt showing the tool and its arguments. SIGIT_PERMISSIONS overrides the default mode for headless runs and clients without permission support
  • New /plan [on|off] command: plan mode blocks mutating tools and asks the model to present a plan while research tools keep working. /permissions prints the effective policy
  • Sessions are durable: conversation history is saved per session under ~/.config/sigit/sessions/ after every turn. ACP session/load actually restores it, the TUI gets /resume, and /clear deletes the saved file
  • Context compaction: /compact compresses the conversation on demand, and the agent compacts automatically once the history approaches a 24k-token budget, summarizing older turns and keeping the recent ones. The tool-round cap rises from 10 to 24 now that long sessions have a defense other than the cap
  • run_command can run work in the background: pass run_in_background and the tool returns a task id immediately, so builds, test suites, and dev servers are no longer killed by the 120 second foreground timeout. Poll with the new command_output tool (read-only, never prompts) and stop with kill_command
  • New task tool: delegate research to a fresh subagent conversation that only gets the read-only tools and returns its final answer, keeping the main context small. Available on OpenAI-compatible backends; on-device returns a clear fallback until onde supports a second context
  • Commits created by the agent are co-authored: commit messages end with Co-Authored-By: siGit Code <sigit@sigit.si> (the sigitc account), which GitHub renders next to the human author. If the model forgets the trailer, siGit amends it in, never rewriting commits that already exist on a remote
  • ACP mode now honors the OPENAI_BASE_URL/OPENAI_API_KEY provider override at startup, matching the interactive client

1.3.1

Adds Model Context Protocol (MCP) client support with the official siGit Code MCP server baked in, a set of agent tools that close parity gaps in the tool layer, and refreshed branding and licensing.

What changed

  • siGit Code is now an MCP client: it connects to MCP servers over the Streamable HTTP transport (a single JSON-RPC endpoint), discovers the tools they expose, and offers them to the model alongside the built-in tools. When the model calls one, the call is forwarded to the owning server and the result fed back into the agent loop
  • Bakes in the official siGit Code MCP server at https://sigit.si/api/v1/mcp (follows SIGIT_CLOUD_URL). When you are signed in (sigit login), the cloud session token is sent as the bearer credential
  • Configure additional servers in mcp.toml — global (~/.config/sigit/mcp.toml) or project-local (.sigit/mcp.toml). Each [[server]] has a name, url, optional enabled, and optional [server.headers]; set official = false to opt out of the baked-in server
  • MCP tools are namespaced mcp__<server>__<tool> so they never collide with built-in tools or across servers; tool output is capped to protect the model's context
  • Discovery is best-effort at startup and bounded by a per-server timeout, so an unreachable server never blocks startup — it just contributes no tools
  • Added a /mcp slash command (TUI and ACP) that lists configured servers, their connection status, and the tools each exposes
  • Disable MCP entirely with SIGIT_MCP=off, or just the official server with SIGIT_MCP_OFFICIAL=off
  • New agent tools that close parity gaps in the tool layer: multi_edit (apply a batch of exact-substring edits to one file atomically — written only if every edit matches), glob (locate files by name pattern with **/*/?/{a,b}, most-recently-modified first), write_todos (render a live task checklist through the tool result for multi-step work), and remember (append durable notes to the nearest AGENTS.md/CLAUDE.md)
  • edit_file now supports replace_all and returns actionable failure context — naming the line whose trimmed text matches when only whitespace differs — so the model self-corrects in one round
  • search_files gained a file_glob filter and a max_results cap (default 50, hard-capped at 1000) that also bounds the directory walk
  • Refreshed branding and legal: updated LICENSE, README, and the npm/PyPI package descriptions

1.3.0

Adds a Local Inference on/off toggle, the open Agent Skills format, and support for project instruction files (AGENTS.md and the like).

What changed

  • Added a Local Inference on/off setting that is the explicit local-vs-cloud mode switch. It is persisted in ~/.config/sigit/settings.toml (default on, local-first) and can be overridden with SIGIT_LOCAL_INFERENCE
  • Toggle it with the /local [on|off] command (TUI and ACP); ACP clients without slash-command support get an equivalent "Local Inference" On/Off control in the session config panel
  • /models now groups models by nature — Local vs siGit Code Cloud — and highlights the active mode's group while still showing the other, so the cloud tiers stay discoverable
  • Discovers Agent Skills (folders with a SKILL.md) from .sigit/skills/ and .claude/skills/ in the project, ~/.config/sigit/skills/, and ~/.claude/skills/
  • Follows the spec's progressive disclosure: each skill's name and description are advertised up front via a new skill tool, and the full instructions load only when the agent activates one
  • Added a /skills slash command (TUI and ACP) that lists the discovered skills
  • Reads project instruction files at session start: AGENTS.md (the cross-tool standard) and CLAUDE.md, walking from the working directory up to the repository root, plus a global file under ~/.config/sigit/, and injects them into the session's system context so their guidance is always in force
  • Nested instruction files are ordered outermost-first so the closest, most specific file takes precedence; the scan never reads above the repository root
  • On-device models are no longer loaded implicitly. The chat UI and ACP sessions come up immediately, and the local model is brought into memory only when you run the /load command (or pick one in /models). Prompts sent before a model is loaded now return a hint instead of blocking on a multi-minute download.

1.2.2

Streams assistant tokens as they arrive, on-device and over the cloud.

What changed

  • Streamed assistant tokens live in the TUI and ACP sessions, both on-device and through siGit Code Cloud
  • On-device inference streams only when a turn offers no tools, since onde can't stream and detect tool calls in the same pass; tool-capable turns still resolve in one shot
  • Fixed the TUI so the latest message stays visible in long chats
  • Put the cloud model-switch confirmation on its own line in ACP

1.2.1

Stabilizes the Zed/ACP integration and finishes the cloud-tier wiring on top of 1.2.0.

What changed

  • Fixed a Zed crash by keeping model-picker labels ASCII in the ACP model selector
  • Wired ACP auth, cloud tiers, and slash commands into the Zed panel, including a /reload command to re-sync session state in place
  • Fixed the TUI so the loaded-model checkmark appears once a download completes
  • Synced bundled agent skills with the current code and added CLAUDE.md

1.2.0

Adds siGit Code Cloud — a hosted inference tier alongside on-device models.

What changed

  • Added siGit Code Cloud with cloud-tier routing, pointed at sigit.si
  • Added account management slash commands and surfaced cloud tiers in /models
  • Carried forward from 1.1.0: ACP SDK v0.13, refreshed dependencies and branding

1.1.0

Bumps the ACP SDK to v0.13 and pulls in updated dependencies.

What changed

  • Updated agent-client-protocol from v0.11 to v0.13
  • Updated onde to 1.1.2
  • Refreshed branding and skill metadata

1.0.4

This release tightens up the terminal experience and finishes a few release-facing cleanup items.

What changed

  • Added bold rich-text rendering in the TUI for assistant replies, so **text** now displays with terminal styling instead of raw markdown markers
  • Refreshed the bundled skill metadata to follow the current Agent Skills SKILL.md format
  • Synced the crate release metadata for the 1.0.4 cut

1.0.3

This is the cleanup release for the editor-side startup problems.

What changed

  • Fixed ACP sessions failing on the first real prompt because the server claimed the model was ready before anything had actually been loaded
  • Changed ACP startup so the default model loads lazily on the first non-slash prompt instead of pretending it is already in memory
  • Kept initialize and session/new lightweight while still sending proper progress updates once model loading begins
  • Updated the Onde integration to 1.0.0
  • Removed a few dependencies we were no longer using

1.0.2

This release was supposed to fix the ACP auth breakage. It did fix the stdout pollution problem, but it turned out not to be the whole story.

What changed

  • Delayed model loading in ACP mode so startup diagnostics would not leak into protocol stdout during the auth handshake
  • Tightened up the ACP startup path for editor integrations
  • Refreshed some README wording while cutting 1.0.2

1.0.1

The first patch after 1.0.0 was mostly about making model loading and model switching feel less opaque.

What changed

  • Added ToolCall-based progress UI for startup model loading and downloading
  • Improved model-switch progress reporting in ACP clients
  • Fixed model-load error handling so failed switches did not leave the UI in a weird state
  • Cleaned up a few status messages and docs while the release was going out

1.0.0 (2026)

siGit Code has been living in real smbCloud repos for a while now. At some point it stopped feeling like an experiment, so we called it 1.0.

What this release is

siGit Code is a local coding agent. It runs a quantized model on your machine, talks to editors over ACP, and can read files, run commands, fetch web pages, and write code without sending your project to a hosted API.

You can install it with Cargo, pip, npm, or Homebrew and use it like any other tool on your machine.

What shipped in 1.0

Editor integration

This is the core of the project.

Zed and VS Code can talk to siGit Code over ACP. Multi-turn sessions work. Tool calling works. Session forking works. Working-directory context works. That was the original goal, and it feels solid now.

Terminal UI

The terminal UI started as a side quest and turned out to be useful. You get a full-screen ratatui chat, streaming tokens, a spinner while the model is busy, and a model picker you can open in the middle of a session.

It runs on macOS and Linux. Windows gets ACP and editor mode for now. The Windows terminal UI is still unfinished.

Tool calling

This is the part that makes siGit Code feel like an agent instead of a chat box. The loop can run up to 10 rounds per message.

Available tools:

  • read_file / write_file / delete_file
  • list_directory / search_files
  • run_command, with an optional working directory
  • read_website, which fetches a URL and strips it down to readable text

The model can call a tool, inspect the result, and keep going until it has a real answer.

Model support

The model list ended up wider than we expected for 1.0:

  • Qwen 3 1.7B, 4B, 8B, and 14B
  • Qwen 2.5 1.5B and 3B
  • Qwen 2.5 Coder 1.5B, 3B, and 7B
  • DeepSeek Coder 6.7B

They are all GGUF models and they all come from Hugging Face on first run.

Qwen 3 is the interesting one. It uses extended thinking mode. The model reasons inside <think>...</think> blocks before answering. The TUI strips those blocks out and renders them dimmed above the reply, so you can see what happened without turning the whole conversation into noise.

The 8B model is the desktop default. Mobile stays on 1.7B because iOS gives apps roughly 2 to 3 GB of memory, and we learned the hard way that 3B can blow up on an iPhone 16e.

Model picker

The model picker shows:

  • what is already cached locally
  • what can be downloaded
  • which models support tool calling
  • whether the local cache looks healthy

You can open it with /models in the TUI or through the editor config option. Switching models happens in the background and the UI stays alive while the download or load is in progress.

smbCloud context

siGit Code knows smbCloud repos better than a generic coding assistant does. It understands the difference between platform-user flows and tenant-app auth flows, how Project, FrontendApp, AuthApp, and GresIQ fit together, and why Next.js SSR deploys are not the same thing as the generic git-push path.

Outside smbCloud, it backs off and behaves like a normal coding agent.

Distribution

Distribution took an unreasonable amount of time, honestly.

There are prebuilt binaries for macOS, Linux, and Windows on both arm64 and x64 where relevant, plus install paths through Cargo, PyPI, npm, and Homebrew:

  • cargo install sigit
  • pip install sigit-code
  • npm install -g @smbcloud/sigit
  • brew install sigit

Getting that whole pipeline to behave across CI, crates.io, PyPI, npm, and Homebrew was basically its own project.

What still does not work

The Windows terminal UI is still missing.

ACP and editor mode work on Windows. The part that is still missing is the interactive full-screen terminal UI. The blocker is Unix-specific terminal handling that has not been abstracted cleanly yet.

Changes since 0.1.2

  • Added Qwen 3 14B support
  • Added Qwen 3 <think> block parsing and separate rendering in the TUI
  • Moved all TUI code into #[cfg(unix)], which fixed a pile of dead-code errors on Windows CI
  • Added live download progress during model switches, including cancellation with Ctrl+C
  • Added model download and loading progress in the Zed agent config panel
  • Added an animated spinner during model switching
  • Added Qwen 2.5 Coder 7B
  • Added downloadable models to the picker, not just locally cached ones
  • Made model selection persist across restarts
  • Added session working-directory support
  • Moved model picker logic into a platform-independent module so Windows can compile without the TUI
  • Added the /models N shortcut for picking a model by number
  • Added the read_website tool
  • Improved read_file handling and empty-reply detection
  • Added async tool execution
  • Fixed CI cross-compilation for macOS, iOS, Linux, and Windows
  • Added npm, PyPI, and Homebrew distribution

© 2026 PT Sigit Mitra Bangun (siGit Code & Deploy), distributed by Splitfire AB.