Skip to content

Installation

This guide installs the full OSTwin runtime: CLI, dashboard, agent orchestration scripts, JavaScript tooling, Python environment, OpenCode integration, and optional services.

The installer validates required dependencies and fails closed when an approved tool is missing. Pre-provision organization-approved, version-pinned tools before running it; the installer does not execute third-party bootstrap scripts.

Dependency Required Notes
macOS or Linux Yes Native Bash installer path.
Bash Yes Used by the installer wrapper.
PowerShell 7+ Yes Used by the orchestration engine. Pre-provision an approved release.
Python 3.10+ Yes Python 3.12 recommended. Pre-provision an approved release.
Node.js + npm Yes Used by dashboard and JavaScript CLIs. Pre-provision an approved release.
Bun Recommended Preferred package manager for JavaScript runtime tasks. Pre-provision an approved release.
Git Recommended Required for room worktree isolation. Shared isolation is the default.
Provider API key Yes At least one of Google, OpenAI, Anthropic, or another configured provider.

Use the public bootstrapper for normal installs:

Download the bootstrapper to a private temporary file, inspect or verify it, and only then execute it. Do not stream network content into a shell.

Terminal window
installer_file="$(mktemp)"
trap 'rm -f "$installer_file"' EXIT
curl --proto '=https' --tlsv1.2 -fsSL \
https://twin.igot.ai/installer.sh -o "$installer_file"
chmod 0700 "$installer_file"
export OSTWIN_INSTALLER_VERSION=v1.0.0 # Replace with the approved tag.
bash "$installer_file"
# Non-interactive, after the same verification step
bash "$installer_file" --yes

Controlled deployments should use a specific tagged release and verify its checksum and approved provenance against an independently obtained release manifest before execution. The canonical URL is mutable and is not, by itself, an adequate federal software-supply-chain control.

The bootstrapper downloads only the explicitly selected packaged Go ostwin-installer release and requires its checksum entry. A missing asset, checksum, or SHA-256 implementation fails closed. It never falls back to an unsigned source archive. Release binaries also embed the matching tagged source archive’s SHA-256 digest and refuse to extract different bytes. Custom source URLs require HTTPS plus an explicit --archive-sha256 value. The explicit source-only recovery path requires an immutable commit and an independently obtained SHA-256 digest.

Common forwarded options:

Terminal window
--yes
--dir ~/.ostwin
--port 3366
--skip-optional
--sync-skills
--no-start
Option Purpose
--yes Run without prompts.
--dir PATH Install to a custom directory. Default: ~/.ostwin.
--port PORT Set the dashboard port. Default: 3366.
--skip-optional Skip optional components.
--sync-skills Force built-in skill sync.
--no-start Install only; do not start services.
--dashboard-only Install dashboard API and frontend only.
--no-channel Install bot dependencies but do not start channel connectors.

Tagged releases publish these installer assets:

install.sh
checksums.txt
ostwin-installer_darwin_amd64.tar.gz
ostwin-installer_darwin_arm64.tar.gz
ostwin-installer_linux_amd64.tar.gz
ostwin-installer_linux_arm64.tar.gz
ostwin-installer_windows_amd64.tar.gz
ostwin-installer_windows_arm64.tar.gz

OSTwin needs at least one LLM provider key. Add keys to ~/.ostwin/.env after installation:

Terminal window
ANTHROPIC_API_KEY=sk-ant-...

Reload your shell after installation:

Terminal window
source ~/.zshrc

Use ~/.bashrc instead if your shell is Bash.

Install local SearXNG support during setup:

Terminal window
./build.sh --search-engine --search-engine-mode docker

Or install and start it after setup:

Terminal window
ostwin search-engine install
ostwin search-engine start

The local runner uses ~/.ostwin/.venv/bin/uv, installs SearXNG dependencies from ~/.ostwin/search-engine/searxng-src/requirements.txt, and starts with ~/.ostwin/search-engine/etc/settings.yml.

Install OS autostart for the dashboard and host daemon:

Terminal window
./build.sh --daemon

Skip daemon setup explicitly:

Terminal window
./build.sh --no-daemon

Start Telegram, Discord, and Slack connectors during install:

Terminal window
./build.sh --channel

Skip connector startup:

Terminal window
./build.sh --no-channel

After installation, OSTwin uses this runtime structure:

Path Purpose
~/.ostwin/.agents/ Installed engine, roles, skills, MCP config, and CLI scripts.
~/.ostwin/.env Runtime environment variables and provider API keys.
~/.ostwin/plans/ Registered global plans.
<project>/.agents/ Project-local OSTwin scaffold created by ostwin init.
<project>/.war-rooms/ Active war-room directories created at runtime.
<project>/.agents/plans/ Local plan copies that agents can read inside the project sandbox.

Run the health check:

Terminal window
ostwin health

Check the installed version:

Terminal window
ostwin version

Start or restart the dashboard if it is not already running:

Terminal window
ostwin dashboard start

Open the dashboard at:

http://localhost:3366

From the project you want OSTwin to operate on:

Terminal window
ostwin init

Create and run a plan:

Terminal window
ostwin plan create --file plan.md
ostwin run plans/my-feature.md

Monitor execution:

Terminal window
ostwin status --watch
ostwin logs room-001 --follow

By default, OSTwin runs with shared workspace isolation. Use room worktrees only when you need per-room Git worktrees:

Terminal window
ostwin run plans/my-feature.md --workspace-isolation room-worktree

The documentation site lives in docs/ and uses Astro Starlight.

Terminal window
cd docs
npm install --package-lock=false
npm run dev

Build the static docs site:

Terminal window
cd docs
npm run build

Preview the production build:

Terminal window
cd docs
npm run preview

The docs build runs npm run sync-installer first. That copies the root install.sh into docs/public/installer.sh and docs/public/install.sh, keeping the public curl installer URL aligned with the repository installer.

To update an initialized project from the installed framework:

Terminal window
ostwin sync

To refresh the global install from a local checkout:

Terminal window
./build.sh --yes --sync-skills

Remove the local OSTwin install:

Terminal window
~/.ostwin/.agents/uninstall.sh

On Windows:

Terminal window
.agents\uninstall.ps1

Review the uninstall prompt before confirming, especially if you have local plans, logs, or generated artifacts under ~/.ostwin.

With OSTwin installed, create plan.md and start the work in the Quick Start.