From d210c968309ba21b1b1f8ce4acf6c1f58fee1468 Mon Sep 17 00:00:00 2001 From: df4p Date: Mon, 8 Jun 2026 10:53:08 -0300 Subject: [PATCH 1/5] feat: Add OmniRoute - Free LLM Gateway Template Adding the OmniRoute template to Dokploy. Never stop coding. Free AI gateway: one endpoint, 160+ providers (50+ free), connect Claude Code, Codex, Cursor, Cline & Copilot to FREE Claude/GPT/Gemini. RTK+Caveman stacked compression saves 15-95% tokens, smart auto-fallback, MCP/A2A, multimodal APIs, Desktop/PWA. --- blueprints/omniroute/docker-compose.yml | 40 ++++++++++++++++++++++++ blueprints/omniroute/omniroute.png | Bin 0 -> 7230 bytes blueprints/omniroute/template.toml | 31 ++++++++++++++++++ meta.json | 20 ++++++++++++ 4 files changed, 91 insertions(+) create mode 100644 blueprints/omniroute/docker-compose.yml create mode 100644 blueprints/omniroute/omniroute.png create mode 100644 blueprints/omniroute/template.toml diff --git a/blueprints/omniroute/docker-compose.yml b/blueprints/omniroute/docker-compose.yml new file mode 100644 index 000000000..09e613a4d --- /dev/null +++ b/blueprints/omniroute/docker-compose.yml @@ -0,0 +1,40 @@ +services: + omniroute: + image: diegosouzapw/omniroute:latest + restart: unless-stopped + + ports: + - "20128" + - "20129" + + volumes: + - omniroute-prod-data:/app/data + + environment: + - NODE_ENV=production + - PORT=${PORT:-20128} + - DASHBOARD_PORT=${DASHBOARD_PORT:-${PORT:-20128}} + - API_PORT=${API_PORT:-20129} + - API_HOST=${API_HOST:-0.0.0.0} + - HOSTNAME=0.0.0.0 + - DATA_DIR=/app/data + - PATH=/home/node/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + + redis: + image: redis:8.6.2-alpine + restart: unless-stopped + volumes: + - redis-prod-data:/data + command: redis-server --save 60 1 --loglevel warning + healthcheck: + test: [ "CMD", "redis-cli", "ping" ] + interval: 10s + timeout: 5s + retries: 3 + +volumes: + omniroute-prod-data: + + redis-prod-data: + + diff --git a/blueprints/omniroute/omniroute.png b/blueprints/omniroute/omniroute.png new file mode 100644 index 0000000000000000000000000000000000000000..4d4a0d1407f0f0db9dc10e3310d0c8893681cc5a GIT binary patch literal 7230 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 E0>SdMVE_OC literal 0 HcmV?d00001 diff --git a/blueprints/omniroute/template.toml b/blueprints/omniroute/template.toml new file mode 100644 index 000000000..96af92cbc --- /dev/null +++ b/blueprints/omniroute/template.toml @@ -0,0 +1,31 @@ +[variables] +main_domain = "${domain}" + +[config] +[[config.domains]] +serviceName = "omniroute" +port = 20128 +host = "${main_domain}" + +[config.env] +JWT_SECRET= "${base64:64}" +API_KEY_SECRET= "${base64:64}" +INITIAL_PASSWORD= "${base64:64}" +STORAGE_ENCRYPTION_KEY= "${base64:64}" +STORAGE_ENCRYPTION_KEY_VERSION=v1 +DISABLE_SQLITE_AUTO_BACKUP=false +PORT=20128 +API_PORT=20129 +OMNIROUTE_USE_TURBOPACK=1 +NODE_ENV=production +MACHINE_ID_SALT=endpoint-proxy-salt +AUTH_COOKIE_SECURE=false +REQUIRE_API_KEY=false +ALLOW_API_KEY_REVEAL=false +BASE_URL=http://localhost:20128 +CLOUD_URL= +NEXT_PUBLIC_BASE_URL=http://localhost:20128 +ENABLE_SOCKS5_PROXY=true +NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=true +PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES=70 +APP_LOG_TO_FILE=true diff --git a/meta.json b/meta.json index 8be7825d7..cef8fff99 100644 --- a/meta.json +++ b/meta.json @@ -4550,6 +4550,26 @@ "self-hosted" ] }, + { + "id": "omniroute", + "name": "OmniRoute", + "version": "latest", + "description": "The Free AI Gateway - Never stop coding. Connect every AI tool to 177 providers — 50+ free — through one endpoint. Auto-fallback. RTK + Caveman compression saves 15–95% tokens. Never hit limits. ~1.9B+ documented free tokens/month — up to ~2.5B in your first month with signup credits.", + "logo": "omniroute.png", + "links": { + "github": "https://github.com/diegosouzapw/OmniRoute", + "website": "https://github.com/diegosouzapw/OmniRoute", + "docs": "https://github.com/diegosouzapw/OmniRoute/wiki" + }, + "tags": [ + "artificial-intelligence", + "gateway", + "generative-ai", + "LLM", + "monitoring", + "routing" + ] + }, { "id": "onedev", "name": "OneDev", From 92cc31cd6d4ad5cbb624bf949d7b9f5e10d3e8ad Mon Sep 17 00:00:00 2001 From: df4p Date: Mon, 8 Jun 2026 11:01:41 -0300 Subject: [PATCH 2/5] fix: Testing files updated Testing files with pnpm updated. --- app/pnpm-workspace.yaml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/pnpm-workspace.yaml diff --git a/app/pnpm-workspace.yaml b/app/pnpm-workspace.yaml new file mode 100644 index 000000000..49c0ad742 --- /dev/null +++ b/app/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +allowBuilds: + esbuild: false From 979c90283588562080594a61da4075c9988f16bc Mon Sep 17 00:00:00 2001 From: go Date: Tue, 9 Jun 2026 15:03:17 -0300 Subject: [PATCH 3/5] fix(omniroute): pin OmniRoute image version, fix template.toml syntax, normalize metadata --- blueprints/omniroute/docker-compose.yml | 4 +-- blueprints/omniroute/template.toml | 42 ++++++++++++------------- meta.json | 4 +-- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/blueprints/omniroute/docker-compose.yml b/blueprints/omniroute/docker-compose.yml index 09e613a4d..552c8f26a 100644 --- a/blueprints/omniroute/docker-compose.yml +++ b/blueprints/omniroute/docker-compose.yml @@ -1,9 +1,9 @@ services: omniroute: - image: diegosouzapw/omniroute:latest + image: diegosouzapw/omniroute:3.8.17 restart: unless-stopped - ports: + expose: - "20128" - "20129" diff --git a/blueprints/omniroute/template.toml b/blueprints/omniroute/template.toml index 96af92cbc..ae4a61e00 100644 --- a/blueprints/omniroute/template.toml +++ b/blueprints/omniroute/template.toml @@ -8,24 +8,24 @@ port = 20128 host = "${main_domain}" [config.env] -JWT_SECRET= "${base64:64}" -API_KEY_SECRET= "${base64:64}" -INITIAL_PASSWORD= "${base64:64}" -STORAGE_ENCRYPTION_KEY= "${base64:64}" -STORAGE_ENCRYPTION_KEY_VERSION=v1 -DISABLE_SQLITE_AUTO_BACKUP=false -PORT=20128 -API_PORT=20129 -OMNIROUTE_USE_TURBOPACK=1 -NODE_ENV=production -MACHINE_ID_SALT=endpoint-proxy-salt -AUTH_COOKIE_SECURE=false -REQUIRE_API_KEY=false -ALLOW_API_KEY_REVEAL=false -BASE_URL=http://localhost:20128 -CLOUD_URL= -NEXT_PUBLIC_BASE_URL=http://localhost:20128 -ENABLE_SOCKS5_PROXY=true -NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=true -PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES=70 -APP_LOG_TO_FILE=true +JWT_SECRET = "${base64:64}" +API_KEY_SECRET = "${base64:64}" +INITIAL_PASSWORD = "${base64:64}" +STORAGE_ENCRYPTION_KEY = "${base64:64}" +STORAGE_ENCRYPTION_KEY_VERSION = "v1" +DISABLE_SQLITE_AUTO_BACKUP = false +PORT = 20128 +API_PORT = 20129 +OMNIROUTE_USE_TURBOPACK = 1 +NODE_ENV = "production" +MACHINE_ID_SALT = "endpoint-proxy-salt" +AUTH_COOKIE_SECURE = false +REQUIRE_API_KEY = false +ALLOW_API_KEY_REVEAL = false +BASE_URL = "http://localhost:20128" +CLOUD_URL = "" +NEXT_PUBLIC_BASE_URL = "http://localhost:20128" +ENABLE_SOCKS5_PROXY = true +NEXT_PUBLIC_ENABLE_SOCKS5_PROXY = true +PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES = 70 +APP_LOG_TO_FILE = true diff --git a/meta.json b/meta.json index cef8fff99..0964961a8 100644 --- a/meta.json +++ b/meta.json @@ -4553,7 +4553,7 @@ { "id": "omniroute", "name": "OmniRoute", - "version": "latest", + "version": "3.8.17", "description": "The Free AI Gateway - Never stop coding. Connect every AI tool to 177 providers — 50+ free — through one endpoint. Auto-fallback. RTK + Caveman compression saves 15–95% tokens. Never hit limits. ~1.9B+ documented free tokens/month — up to ~2.5B in your first month with signup credits.", "logo": "omniroute.png", "links": { @@ -4565,7 +4565,7 @@ "artificial-intelligence", "gateway", "generative-ai", - "LLM", + "llm", "monitoring", "routing" ] From 92de9144cc05902d1bda559b86705b24e323e9b9 Mon Sep 17 00:00:00 2001 From: go Date: Tue, 9 Jun 2026 15:04:07 -0300 Subject: [PATCH 4/5] chore: Add VS Code setting for git config auto-approval --- .vscode/settings.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..50e5eba2a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "chat.tools.terminal.autoApprove": { + "git config": true + } +} \ No newline at end of file From a242210712ef78449388f11ffe7ea1b9d82fa717 Mon Sep 17 00:00:00 2001 From: go Date: Tue, 9 Jun 2026 15:25:02 -0300 Subject: [PATCH 5/5] chore(app): add pnpm-workspace.yaml to fix pnpm workspace config --- app/pnpm-workspace.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/pnpm-workspace.yaml b/app/pnpm-workspace.yaml index 49c0ad742..c4ec45c05 100644 --- a/app/pnpm-workspace.yaml +++ b/app/pnpm-workspace.yaml @@ -1,2 +1,4 @@ +packages: + - . allowBuilds: esbuild: false