Skip to content

v2.2.0 — Scheduled jobs on your Claude or ChatGPT plan, no runner container

Choose a tag to compare

@IkarusMK IkarusMK released this 03 Nov 06:26
· 22 commits to main since this release

Scheduled jobs run inside AICortex — on a Claude or ChatGPT plan or an API key, with
no runner container any more.

Added

  • The runner is built in. Tick Runner on under Scheduled jobs → Set up the
    runner
    and AICortex runs due jobs itself — no extra container, no key to copy.
    It checks once a minute without a model. A Claude subscription token (claude setup-token) or an Anthropic key goes to Anthropic's Messages API (the token as
    an OAuth bearer, no Claude Code needed); OpenRouter, OpenAI and Gemini keys go to
    their OpenAI-compatible chat APIs. The model's tool calls go through /mcp as the
    runner (an in-memory token), so roles, act-as and audit apply as for any caller.
    Every model answer has a size limit and a five-minute deadline, so a provider
    that never finishes can't hold up later jobs.
  • A ChatGPT plan as the runner's model access. Sign in with ChatGPT in the
    runner setup uses OpenAI's sign-in for open-source apps: authorization code with
    PKCE, the ID token checked against OpenAI's keys, the tokens encrypted in the
    vault and refreshed by AICortex (an idle sign-in is renewed before its 30 days
    run out). Jobs run through OpenAI's Responses API; the model can be left empty
    for the account's first model, and the field suggests the account's models. A
    usage limit stops the run with a link to the plan's usage page; Sign out
    revokes the sign-in at OpenAI. A sign-in the vault can't store is revoked again
    right away, and the audit log names the ChatGPT account that was attached.

Changed

  • An Anthropic API key is one option in the runner setup; a setup saved with the
    former second option (anthropic) is read as that one and runs via the Messages
    API.

Removed

  • The separate runner: runner/, runner/generic/ and the image
    ghcr.io/ikarusmk/aicortex-runner (no longer built). The built-in runner does
    their job.
  • Creating runner keys and the runner_config tool — both existed only for the
    separate runner. The model key now never leaves AICortex except to the model
    provider. Runner keys already made and RUNNER_TOKEN keep working for an own
    runner.

Fixed

  • Two runners could run the same job twice. cron_due now hands a job to one
    runner per scheduled minute.

Docs

  • README Highlights and Autonomy & scheduling describe the built-in runner and
    the ChatGPT plan; docs/clients.md, docker-compose.yml and .env.example say
    that RUNNER_TOKEN is only for an own runner outside AICortex.

Upgrading

Pull ghcr.io/ikarusmk/aicortex:v2.2.0 and redeploy — no configuration changes are
needed. Then open Scheduled jobs → Set up the runner in the WebUI: choose the model
access, enter the key or sign in with ChatGPT, tick Runner on, save.

If you started the separate runner from 2.1.0 (ghcr.io/ikarusmk/aicortex-runner),
stop and remove it: it fetched its model access with runner_config, which is gone.