Download & Install
Run Inwardis on your own infrastructure with Docker. Up and running in under a minute — including the MCP endpoint your AI agents connect to.
Latest release: checking… Release notes →
Prerequisites
- Docker 20+ with Docker Compose
- 2 GB RAM minimum (4 GB recommended)
- Any OS that runs Docker — Linux, macOS, or Windows
Quick Start
Request a free trial key or buy a license. The email contains your key and your personal download link for the product bundle.
Save inwardis-bundle-<version>.tar.gz from your personal link (the filename carries the version, e.g. inwardis-bundle-1.0.0.tar.gz), then:
Linux & macOS
mkdir inwardis && cd inwardis
curl -O https://inwardis.com/downloads/docker-compose.prod.yml
.env file with the three required secrets and your version
Linux & macOS
cat > .env <<EOF
POSTGRES_PASSWORD=$(openssl rand -hex 16)
JWT_SECRET=$(openssl rand -hex 32)
INWARDIS_ENCRYPTION_KEY=$(openssl rand -base64 24)
INWARDIS_VERSION=<version> # e.g. 1.0.0 — must match your downloaded bundle
EOF
There are no insecure defaults — Compose refuses to start without the secrets, and the version must match the bundle you downloaded or docker compose up fails with image not found.
On Windows? Steps 2 and 3 look different
Docker Desktop uses WSL2 as its engine, but it does not give you a Linux shell — the distributions it installs are internal and do not appear in the Start menu. So PowerShell is the path that needs nothing extra, and it is below.
First — check the engine
docker info --format "{{.OSType}} {{.Architecture}}"
It must print linux x86_64. If it prints windows, Docker Desktop is in Windows-containers mode — switch with the tray icon's Switch to Linux containers…. If it errors, the engine is not running yet; wait for the whale icon to go steady. A docker load that waits a long time and then fails with an API error mentioning Linux images is this, not the bundle.
Step 2 — PowerShell
mkdir inwardis; cd inwardis
curl.exe -O https://inwardis.com/downloads/docker-compose.prod.yml
Spell out curl.exe: plain curl is an alias for Invoke-WebRequest, which has no -O.
Step 3 — PowerShell
$rng = [System.Security.Cryptography.RandomNumberGenerator]::Create()
$b = New-Object 'System.Byte[]' 16; $rng.GetBytes($b)
$pg = ($b | ForEach-Object { $_.ToString('x2') }) -join ''
$b = New-Object 'System.Byte[]' 32; $rng.GetBytes($b)
$jwt = ($b | ForEach-Object { $_.ToString('x2') }) -join ''
$b = New-Object 'System.Byte[]' 24; $rng.GetBytes($b)
$key = [Convert]::ToBase64String($b)
@"
POSTGRES_PASSWORD=$pg
JWT_SECRET=$jwt
INWARDIS_ENCRYPTION_KEY=$key
INWARDIS_VERSION=<version>
"@ | Set-Content -Encoding ascii .env
-Encoding ascii is required, not cosmetic: PowerShell writes UTF-16 by
default and Docker Compose reads that as binary, so the first variable silently goes missing.
openssl is not on Windows, which is why the secrets come from
RandomNumberGenerator — never Get-Random, which is not a
cryptographic source.
Steps 4 and 5 are the same on every platform: docker load, then docker compose up -d.
Already using WSL? If you have a Linux distribution installed — you would
have added it yourself, or with wsl --install — the Linux commands above work
inside it unchanged. Enable that distribution first under Docker Desktop → Settings
→ Resources → WSL integration, or docker will not be on its path.
Optional settings — add to the same .env whenever you want them
- SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, SMTP_AUTH, SMTP_STARTTLS
- Outgoing email: invitations, notifications, and login codes if you turn on email MFA. Without it the product runs and logs you in; those emails simply are not sent.
- INWARDIS_FEATURE_COLLABORATION, INWARDIS_FEATURE_VERSIONING, INWARDIS_FEATURE_MCP
- Feature switches, all
trueby default; also toggleable in the Admin panel. - RATE_LIMIT_RPM, RATE_LIMIT_LOGIN, RATE_LIMIT_ENABLED
- API and login rate limits.
- INWARDIS_METRICS_SCRAPE_TOKEN
- Lets Prometheus read
/actuator/prometheus. - JAVA_OPTS
- Extra JVM flags, e.g.
-Xmx2g.
Full reference with defaults, OIDC single sign-on and reverse-proxy notes: INSTALL.md, or Help → Installation inside the product.
docker load -i inwardis-bundle-<version>.tar.gz
docker compose -f docker-compose.prod.yml up -d
open http://localhost:8080
Register the first account, then go to Admin > License and paste the key from step 1. Without a key the application runs read-only; a paid key never expires, so this is a one-time step.
Updating
New releases appear on your personal download link (the one from your key email) while your subscription is active — and every version you were ever entitled to stays re-downloadable there, forever. What changed in each one is on the releases page. To update: download the newer bundle, then
docker load -i inwardis-bundle-<new version>.tar.gz
# then update INWARDIS_VERSION in .env and:
docker compose -f docker-compose.prod.yml up -d
Your data is preserved across updates. If the subscription lapses, the version you already run keeps working — there is nothing to renew inside the product, and no phone-home to fail.
Connect an AI agent
Inwardis ships an MCP server, so an assistant can read and build models directly. It is on out of the box and reaches nothing until you issue a key — every client authenticates with a scoped key you create and can revoke.
-
1.
Issue an API key under Admin > API Keys and copy it — it starts with
ink_and is shown once - 2. Point your MCP client at the endpoint below, sending the key as a bearer token
POST http://localhost:8080/api/v1/mcp
Authorization: Bearer ink_...
Start the agent with the learn tool: it hands over the modelling
concepts and your own template vocabulary before the agent writes anything. Keys are scoped,
revocable and rate-limited, and every call lands in the audit log.
Not connecting an agent? Set INWARDIS_FEATURE_MCP=false
to remove the endpoint entirely, rather than leaving it locked.
System requirements
| Component | Minimum | Recommended |
|---|---|---|
| RAM | 2 GB | 4 GB |
| Disk | 1 GB | 5 GB |
| Docker | 20.0+ with Docker Compose v2 | |
| OS | Linux, macOS, or Windows (any OS with Docker support) | |
Data & Backups
All data is stored in a PostgreSQL database within the Docker volume. To back up your data:
docker compose exec postgres pg_dump -U inwardis inwardis > backup.sql
Your model never leaves your infrastructure. Inwardis has no telemetry, analytics, or phone-home functionality — licensing included.
For a portable copy of everything — database, version history and attachments in one file — use Admin > Backup to export a .inwbak archive.
Lost your link?
Your personal download link, your licence key and the link that manages your subscription are all in the email we sent when you bought. If that email is gone, enter your address and we will send them again.
We answer the same way whether or not the address has an account — so this form can never be used to find out who our customers are.