OpenRouter AI proxy

Hi, i want to add container with proxy AI to OpenRouter.
Link to OpenRouter AI: https://openrouter.ai/
Repo with docker compose: GitHub - miikkaylisiurunen/raycast-ai-openrouter-proxy: Integrate any OpenAI-compatible API with Raycast AI
Repo raycast-proxy-arm64.tar file generated using Docker Desktop on Apple M4

{
  "architecture": "arm64",
  "config": {
    "ArgsEscaped": true,
    "Cmd": [
      "npm",
      "start"
    ],
    "Entrypoint": [
      "docker-entrypoint.sh"
    ],
    "Env": [
      "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
      "NODE_VERSION=22.19.0",
      "YARN_VERSION=1.22.22",
      "NODE_ENV=production"
    ],
    "WorkingDir": "/app"
  },
  "created": "2025-09-23T11:35:45.407127838Z",
  "history": [
    {
      "comment": "debuerreotype 0.16",
      "created": "2025-08-28T22:35:08Z",
      "created_by": "# debian.sh --arch 'arm64' out/ 'bookworm' '@1757289600'"
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-08-28T22:35:08Z",
      "created_by": "RUN /bin/sh -c groupadd --gid 1000 node   && useradd --uid 1000 --gid node --shell /bin/bash --create-home node # buildkit"
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-08-28T22:35:08Z",
      "created_by": "ENV NODE_VERSION=22.19.0",
      "empty_layer": true
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-08-28T22:35:08Z",
      "created_by": "RUN /bin/sh -c ARCH= OPENSSL_ARCH= && dpkgArch=\"$(dpkg --print-architecture)\"     && case \"${dpkgArch##*-}\" in       amd64) ARCH='x64' OPENSSL_ARCH='linux-x86_64';;       ppc64el) ARCH='ppc64le' OPENSSL_ARCH='linux-ppc64le';;       s390x) ARCH='s390x' OPENSSL_ARCH='linux*-s390x';;       arm64) ARCH='arm64' OPENSSL_ARCH='linux-aarch64';;       armhf) ARCH='armv7l' OPENSSL_ARCH='linux-armv4';;       i386) ARCH='x86' OPENSSL_ARCH='linux-elf';;       *) echo \"unsupported architecture\"; exit 1 ;;     esac     && set -ex     && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends     && rm -rf /var/lib/apt/lists/*     && export GNUPGHOME=\"$(mktemp -d)\"     && for key in       5BE8A3F6C8A5C01D106C0AD820B1A390B168D356       DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7       CC68F5A3106FF448322E48ED27F5E38D5B0A215F       8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600       890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4       C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C       108F52B48DB57BB0CC439B2997B01419BD92F80A       A363A499291CBBC940DD62E41F10027AF002F8B0     ; do       { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys \"$key\" && gpg --batch --fingerprint \"$key\"; } ||       { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys \"$key\" && gpg --batch --fingerprint \"$key\"; } ;     done     && curl -fsSLO --compressed \"https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz\"     && curl -fsSLO --compressed \"https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc\"     && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc     && gpgconf --kill all     && rm -rf \"$GNUPGHOME\"     && grep \" node-v$NODE_VERSION-linux-$ARCH.tar.xz\\$\" SHASUMS256.txt | sha256sum -c -     && tar -xJf \"node-v$NODE_VERSION-linux-$ARCH.tar.xz\" -C /usr/local --strip-components=1 --no-same-owner     && rm \"node-v$NODE_VERSION-linux-$ARCH.tar.xz\" SHASUMS256.txt.asc SHASUMS256.txt     && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name \"$OPENSSL_ARCH\" -exec rm -rf {} \\;     && apt-mark auto '.*' > /dev/null     && find /usr/local -type f -executable -exec ldd '{}' ';'       | awk '/=>/ { so = $(NF-1); if (index(so, \"/usr/local/\") == 1) { next }; gsub(\"^/(usr/)?\", \"\", so); print so }'       | sort -u       | xargs -r dpkg-query --search       | cut -d: -f1       | sort -u       | xargs -r apt-mark manual     && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false     && ln -s /usr/local/bin/node /usr/local/bin/nodejs     && node --version     && npm --version     && rm -rf /tmp/* # buildkit"
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-08-28T22:35:08Z",
      "created_by": "ENV YARN_VERSION=1.22.22",
      "empty_layer": true
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-08-28T22:35:08Z",
      "created_by": "RUN /bin/sh -c set -ex   && savedAptMark=\"$(apt-mark showmanual)\"   && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr --no-install-recommends   && rm -rf /var/lib/apt/lists/*   && export GNUPGHOME=\"$(mktemp -d)\"   && for key in     6A010C5166006599AA17F08146C2130DFD2497F5   ; do     { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys \"$key\" && gpg --batch --fingerprint \"$key\"; } ||     { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys \"$key\" && gpg --batch --fingerprint \"$key\"; } ;   done   && curl -fsSLO --compressed \"https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz\"   && curl -fsSLO --compressed \"https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc\"   && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz   && gpgconf --kill all   && rm -rf \"$GNUPGHOME\"   && mkdir -p /opt   && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/   && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn   && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg   && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz   && apt-mark auto '.*' > /dev/null   && { [ -z \"$savedAptMark\" ] || apt-mark manual $savedAptMark > /dev/null; }   && find /usr/local -type f -executable -exec ldd '{}' ';'     | awk '/=>/ { so = $(NF-1); if (index(so, \"/usr/local/\") == 1) { next }; gsub(\"^/(usr/)?\", \"\", so); print so }'     | sort -u     | xargs -r dpkg-query --search     | cut -d: -f1     | sort -u     | xargs -r apt-mark manual   && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false   && yarn --version   && rm -rf /tmp/* # buildkit"
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-08-28T22:35:08Z",
      "created_by": "COPY docker-entrypoint.sh /usr/local/bin/ # buildkit"
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-08-28T22:35:08Z",
      "created_by": "ENTRYPOINT [\"docker-entrypoint.sh\"]",
      "empty_layer": true
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-08-28T22:35:08Z",
      "created_by": "CMD [\"node\"]",
      "empty_layer": true
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-09-23T11:35:33.88960643Z",
      "created_by": "WORKDIR /app"
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-09-23T11:35:33.940684055Z",
      "created_by": "COPY package*.json ./ # buildkit"
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-09-23T11:35:38.91862896Z",
      "created_by": "ENV NODE_ENV=production",
      "empty_layer": true
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-09-23T11:35:38.91862896Z",
      "created_by": "RUN /bin/sh -c npm ci --omit=dev # buildkit"
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-09-23T11:35:45.407127838Z",
      "created_by": "COPY /app/dist ./dist # buildkit"
    },
    {
      "comment": "buildkit.dockerfile.v0",
      "created": "2025-09-23T11:35:45.407127838Z",
      "created_by": "CMD [\"npm\" \"start\"]",
      "empty_layer": true
    }
  ],
  "os": "linux",
  "rootfs": {
    "diff_ids": [
      "sha256:07d4c428e5bd1876bbc1c2412d105f749f49898b64c684185c5123c73c8e9e7e",
      "sha256:f8533164f19d6b4cb7e42281965426fb788c4e0299da2978555d466a3ed7b25a",
      "sha256:b314ee512c6b6135a5e5ea504a7b4936e59243c2cc01619086623c509c3b6a98",
      "sha256:8ffdddd30b5e2728c989dd7e2df0b54465dc93d9eda0ea90ca493b782d17833b",
      "sha256:c3fef7151a48ea441ab7ba045df5a817a6cda16441d0632e7200822d0229fc10",
      "sha256:c4837ad00da0f8c504b28492422644d22c5844448fab9b03c478a43fbe4c5405",
      "sha256:4a6a89780f9be5345204ac0cc1ea97cec2312968b1bbc375be396a3385a864bc",
      "sha256:43146a6e390c2c0c1361b00b13a01d807bd57c228f75565f77268343c8274ef3",
      "sha256:eca53f2ae8179fbdc532140a7a8fcd9febc12f5261f78cad581484ea876f09f8"
    ],
    "type": "layers"
  }
}

I added env list raycast-env that contains
Key=BASE_URL and Value=https://openrouter.ai/api/v1
Key=API_KEY and Value=API_KEY_VALUE

I added mounts raycast-models:
Src=/usb1/models.json
Dst=/app/models.json

models.json:

[
  {
    "id": "openrouter/openai/gpt-4o-mini",
    "name": "GPT‑4o Mini",
    "description": "Fast, cost‑effective GPT‑4‑class model from OpenAI via OpenRouter",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/openai/gpt-4o",
    "name": "GPT‑4o",
    "description": "Latest GPT‑4 Omni model with vision and reasoning",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/google/gemini-1.5-flash",
    "name": "Gemini 1.5 Flash",
    "description": "Google’s fast multimodal model via OpenRouter",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/meta-llama/llama-3.1-70b-instruct",
    "name": "LLaMA 3.1 70B Instruct",
    "description": "Meta’s large‑scale instruction‑tuned model",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/anthropic/claude-3.5-sonnet",
    "name": "Claude 3.5 Sonnet",
    "description": "Anthropic’s balanced reasoning model",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/openai/gpt-5",
    "name": "GPT‑5",
    "description": "OpenAI’s latest flagship model with unified fast/deep reasoning",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/anthropic/claude-sonnet-4",
    "name": "Claude Sonnet 4",
    "description": "Anthropic’s newest Sonnet model with enhanced reasoning and coding",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/x-ai/grok-4-fast:free",
    "name": "Grok 4 Fast (Free)",
    "description": "xAI’s cost‑efficient reasoning model with 2M token context window; currently free on OpenRouter",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/google/gemini-2.5-pro",
    "name": "Gemini 2.5 Pro",
    "description": "Google’s state‑of‑the‑art reasoning model with 1M token context window",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/deepseek/deepseek-r1-0528:free",
    "name": "DeepSeek R1 0528 (Free)",
    "description": "May 2025 update to DeepSeek R1 with improved reasoning; fully open‑source",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/deepseek/deepseek-v3-0324:free",
    "name": "DeepSeek V3 0324 (Free)",
    "description": "Latest DeepSeek flagship chat model; mixture‑of‑experts architecture",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/deepseek/deepseek-r1:free",
    "name": "DeepSeek R1 (Free)",
    "description": "Open‑source reasoning model with performance on par with OpenAI o1",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/qwen/qwen3-coder:free",
    "name": "Qwen3 Coder (Free)",
    "description": "Mixture‑of‑Experts code generation model optimized for agentic coding tasks",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/tngtech/deepseek-r1t2-chimera:free",
    "name": "DeepSeek R1T2 Chimera (Free)",
    "description": "Second‑generation Chimera model with tri‑parent design for strong reasoning at lower latency",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  },
  {
    "id": "openrouter/z-ai/glm-4.5-air:free",
    "name": "GLM 4.5 Air (Free)",
    "description": "Lightweight variant of GLM‑4.5 for agent‑centric applications; supports hybrid inference modes",
    "apiBaseUrl": "https://openrouter.ai/api/v1",
    "apiKeyEnv": "API_KEY"
  }
]

i add container using command:

add name=raycast dns=8.8.8.8 logging=yes file=raycast-proxy-arm64.tar envlists=raycast-env mounts=raycast-models check-certificate=no root-dir=/usb1/docker/containers/raycast/ interface=veth1 start-on-boot=yes workdir=/app

and after all receive error like below. Any idea whats wrong or how to run this?

*** start
*** started PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NODE_VERSION=22.19.0 YARN_VERSION=1.22.22 NODE_ENV=production API_KEY=api_key_is_here BASE_URL=https://openrouter.ai/api/v1 docker-entrypoint.sh npm start
execvpe: No such file or directory
container exec error
*** error: exited with status 255

Go to Files and delete the raycast directory if it exists under usb1/docker/containers/, then re-add the container. You should never create the Root Dir directory in advance on the file system, only create its parent folder.

Also, remove the leading / in front of usb1/... when specifying paths.