cogem-core
v0.0.3
Published
BYOK codex-on-Gemini client-core libs: turn-resilience, local store, OS-keychain secret access, codex SDK + app-server facades.
Readme
cogem-core
Run OpenAI Codex on your own Gemini key. Point the Codex harness at a BYOK Gemini model through a pure-Rust bridge — keep the full Codex agent (plan, approval, tools, apply_patch via shell) and Gemini’s native grounding, code execution, and thinking, together.
The bridge binary is fetched and supervised automatically — no Rust toolchain, no CG_DIR, no setup.
Runs on the Bun runtime (it uses
bun:sqlite+ thebunglobals). A plain Node process can’t load it.
Install
bun add cogem-coreQuickstart
import { createCg } from 'cogem-core'
const cg = await createCg({ apiKey: process.env.GEMINI_API_KEY })
try {
const result = await cg.run(
'Add a multiply(a, b) function to math.py and edit the file.'
)
console.log(result.finalResponse)
} finally {
cg.stop()
}createCg downloads the prebuilt bridge once (cached under ~/.cache/cg), supervises it, opens a Codex session on Gemini, and gives you run(task, { workingDirectory, outputSchema, approvalPolicy }). Only apiKey is required; model defaults to gemini-3.5-flash, port to 4011.
Structured output
const r = await cg.run('Describe a person named Alice who is 30.', {
outputSchema: {
type: 'object',
properties: { name: { type: 'string' }, age: { type: 'integer' } },
required: ['name', 'age']
}
})
// r.finalResponse is schema-conformant JSON, even though the prompt asked for prose.Building blocks
createCg is the one-call path; the primitives are exported for advanced use:
BridgeSupervisor— resolve + supervise the bridge sidecar (override the binary withbinaryPath, or run a local build withcgDir).CodexRuntime— the typed SDK path (run/runResilient/stream/ structured output).AppServerSession— the full app-server surface (goals / fork / steer / interrupt / resume / approvals).SecretStore— store the BYOK key in the OS keychain.ThreadStore— local thread persistence.runResilient— deadline + retry + backoff for a turn under load.
Architecture, decisions, and the per-capability can-fail tests live in the cg-doc repo.
