feat: add Codex runtime and GitLab personal storage#36
Draft
charpty wants to merge 3 commits into
Draft
Conversation
charpty
force-pushed
the
codex-add-codex-runtime
branch
from
July 17, 2026 09:14
4a471e7 to
21264a8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Why
Loopat previously assumed that every AI provider ran through Claude Code and that personal storage lived on GitHub. This change makes both boundaries explicit and extensible:
clauderuntime or the newcodexruntime.GitHostProviderabstraction, with GitLab added as another built-in implementation.Existing Claude and GitHub configurations remain backward compatible.
Design
Codex runtime
Codex command construction, provider environment mapping, and JSONL event parsing live in
server/src/codex-cli.ts. The session layer translates those events into Loopat messages and owns process lifecycle, thread persistence, interruption, queueing, auto-naming, and usage reporting.Codex runs through the host CLI and does not initialize Claude settings, plugins, MCP servers, podman containers, or the Anthropic egress gateway.
GitLab personal storage
The GitLab provider normalizes web/API URLs, supports multiple token transport conventions, preserves full namespace/project paths, and reuses the platform-neutral personal repository flow.
For self-hosted installations whose API is behind SSO, administrators can pin a full SSH repository. That mode uses the Loopat process account's SSH identity and preserves a valid configured Git commit author. The implementation contains no deployment-specific hostnames or account identifiers.
Validation
bun test server/test/codex-cli.test.ts server/test/gitlab.test.ts server/test/git-author.test.ts— 18 passedbunx tsc -p server/tsconfig.json --noEmitbun run build— Rust binaries, web TypeScript, and Vite build passedANTHROPIC_API_KEY