summaryrefslogtreecommitdiff
path: root/README.md
blob: b851b4d529ee63bfd451f32d0915b174418de875 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# panto-codex

Codex subscription defaults for panto. Mark named tables; the extension fills the boilerplate.

## Setup

Requires panto's `configure(config)` extension hook (before auth/provider validation).

```toml
[extensions]
rocks = ["panto-codex"]

[auth.codex]
panto_codex_extension = true

[providers.codex]
auth = "codex"
panto_codex_extension = true
```

```sh
panto auth login codex
panto models sync
panto models list codex:
```

## Defaults

| Setting | Value |
| --- | --- |
| Auth | Codex device OAuth; credentials and refresh stay in panto |
| Provider | Responses API with the Codex dialect; `openai` model catalog |
| Endpoint | `https://chatgpt.com/backend-api/codex` |
| Headers | `OpenAI-Beta: responses=experimental`, `originator: codex_cli_rs` |

## Rules

- Only `panto_codex_extension = true` opts in; auth/provider names are arbitrary.
- Keep `providers.<name>.auth` explicit; the extension never guesses linkage.
- Explicit values win, including nested endpoints and case-insensitive headers.
- Defaults are independent per table/load; no config files are rewritten.
- No network or credentials in Lua; env/session placeholders stay raw for panto.
- Rigs must include this extension themselves; `--no-extensions` skips it.

Flat and endpoint-table provider configurations are supported. Overrides must
remain valid panto configuration.

## Packaging / checks

```sh
panto lua _selfcheck.lua
luarocks lint panto-codex-scm-1.rockspec
```

The rockspec maps `require("panto-codex")` to `init.lua`; no dependencies
beyond Lua.

## References

- [OpenAI device-login implementation](https://github.com/openai/codex/blob/main/codex-rs/login/src/device_code_auth.rs)
- [OpenAI authentication documentation](https://developers.openai.com/codex/auth/)