codex-lb 0.3.0__tar.gz → 0.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- codex_lb-0.3.1/.all-contributorsrc +52 -0
- codex_lb-0.3.1/.github/release-please-manifest.json +3 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/CHANGELOG.md +9 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/PKG-INFO +32 -6
- codex_lb-0.3.1/README.md +81 -0
- codex_lb-0.3.1/app/static/index.css +1248 -0
- codex_lb-0.3.1/app/static/index.html +541 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/static/index.js +101 -29
- codex_lb-0.3.1/docs/screenshots/accounts.jpg +0 -0
- codex_lb-0.3.1/docs/screenshots/dashboard.jpg +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/pyproject.toml +1 -1
- codex_lb-0.3.0/.github/release-please-manifest.json +0 -3
- codex_lb-0.3.0/README.md +0 -55
- codex_lb-0.3.0/app/static/7.css +0 -1409
- codex_lb-0.3.0/app/static/index.css +0 -572
- codex_lb-0.3.0/app/static/index.html +0 -504
- codex_lb-0.3.0/docs/screenshots/accounts.jpeg +0 -0
- codex_lb-0.3.0/docs/screenshots/dashboard.jpeg +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/.dockerignore +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/.env.example +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/.github/release-please-config.json +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/.github/workflows/ci.yml +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/.github/workflows/release-please.yml +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/.github/workflows/release.yml +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/.gitignore +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/.pre-commit-config.yaml +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/AGENTS.md +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/Dockerfile +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/LICENSE +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/cli.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/auth/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/auth/models.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/auth/refresh.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/balancer/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/balancer/logic.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/balancer/types.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/clients/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/clients/http.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/clients/oauth.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/clients/proxy.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/clients/usage.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/config/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/config/settings.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/crypto.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/errors.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/openai/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/openai/models.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/openai/parsing.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/openai/requests.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/plan_types.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/types.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/usage/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/usage/logs.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/usage/models.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/usage/pricing.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/usage/quota.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/usage/types.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/utils/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/utils/request_id.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/utils/retry.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/utils/sse.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/core/utils/time.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/db/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/db/migrations/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/db/migrations/versions/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/db/migrations/versions/add_accounts_chatgpt_account_id.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/db/migrations/versions/add_accounts_reset_at.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/db/migrations/versions/add_dashboard_settings.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/db/migrations/versions/add_request_logs_reasoning_effort.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/db/migrations/versions/normalize_account_plan_types.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/db/models.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/db/session.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/dependencies.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/main.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/accounts/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/accounts/api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/accounts/auth_manager.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/accounts/repository.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/accounts/schemas.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/accounts/service.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/health/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/health/api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/health/schemas.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/oauth/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/oauth/api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/oauth/schemas.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/oauth/service.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/oauth/templates/oauth_success.html +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/proxy/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/proxy/api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/proxy/helpers.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/proxy/load_balancer.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/proxy/schemas.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/proxy/service.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/proxy/sticky_repository.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/proxy/types.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/request_logs/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/request_logs/api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/request_logs/repository.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/request_logs/schemas.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/request_logs/service.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/settings/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/settings/api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/settings/repository.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/settings/schemas.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/settings/service.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/shared/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/shared/schemas.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/usage/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/usage/api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/usage/repository.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/usage/schemas.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/usage/service.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/app/modules/usage/updater.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/docker-compose.yml +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/__init__.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/conftest.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_accounts_api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_accounts_api_extended.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_codex_usage_api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_db_models.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_health_and_errors.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_load_balancer_integration.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_migrations.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_oauth_flow.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_proxy_api_extended.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_proxy_compact.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_proxy_responses.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_proxy_sticky_sessions.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_repositories.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_request_logs_api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_request_logs_filters.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_settings_api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_usage_api.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/integration/test_usage_summary.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_auth.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_auth_manager.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_auth_refresh.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_load_balancer.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_oauth_client.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_pricing.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_proxy_utils.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_retry.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_sse.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_usage.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_usage_client.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/tests/unit/test_usage_updater.py +0 -0
- {codex_lb-0.3.0 → codex_lb-0.3.1}/uv.lock +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"projectName": "codex-lb",
|
|
3
|
+
"projectOwner": "Soju06",
|
|
4
|
+
"repoType": "github",
|
|
5
|
+
"repoHost": "https://github.com",
|
|
6
|
+
"files": [
|
|
7
|
+
"README.md"
|
|
8
|
+
],
|
|
9
|
+
"imageSize": 100,
|
|
10
|
+
"commit": true,
|
|
11
|
+
"commitConvention": "angular",
|
|
12
|
+
"contributors": [
|
|
13
|
+
{
|
|
14
|
+
"login": "Soju06",
|
|
15
|
+
"name": "Soju06",
|
|
16
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/34199905?v=4",
|
|
17
|
+
"profile": "https://github.com/Soju06",
|
|
18
|
+
"contributions": [
|
|
19
|
+
"code",
|
|
20
|
+
"test",
|
|
21
|
+
"maintenance",
|
|
22
|
+
"infra"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"login": "JKamsker",
|
|
27
|
+
"name": "Jonas Kamsker",
|
|
28
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/11245306?v=4",
|
|
29
|
+
"profile": "http://jonas.kamsker.at/",
|
|
30
|
+
"contributions": [
|
|
31
|
+
"code",
|
|
32
|
+
"bug",
|
|
33
|
+
"maintenance"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"login": "Quack6765",
|
|
38
|
+
"name": "Quack",
|
|
39
|
+
"avatar_url": "https://avatars.githubusercontent.com/u/5446230?v=4",
|
|
40
|
+
"profile": "https://github.com/Quack6765",
|
|
41
|
+
"contributions": [
|
|
42
|
+
"code",
|
|
43
|
+
"bug",
|
|
44
|
+
"maintenance",
|
|
45
|
+
"design"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"contributorsPerLine": 7,
|
|
50
|
+
"linkToUsage": false,
|
|
51
|
+
"commitType": "docs"
|
|
52
|
+
}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.1](https://github.com/Soju06/codex-lb/compare/v0.3.0...v0.3.1) (2026-01-22)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Documentation
|
|
7
|
+
|
|
8
|
+
* add Quack6765 as a contributor for design ([7a5ec08](https://github.com/Soju06/codex-lb/commit/7a5ec084b9a8d32c844127739f826a5f83bf1440))
|
|
9
|
+
* update .all-contributorsrc ([14ea9da](https://github.com/Soju06/codex-lb/commit/14ea9da361a978a56c4d1f7facefe789193c7b91))
|
|
10
|
+
* update README.md ([f283d60](https://github.com/Soju06/codex-lb/commit/f283d60ae359585cd128a965ca6fba2a14249a11))
|
|
11
|
+
|
|
3
12
|
## [0.3.0](https://github.com/Soju06/codex-lb/compare/v0.2.0...v0.3.0) (2026-01-21)
|
|
4
13
|
|
|
5
14
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codex-lb
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Codex load balancer and proxy for ChatGPT accounts with usage dashboard
|
|
5
5
|
Author-email: Soju06 <qlskssk@gmail.com>
|
|
6
6
|
Maintainer-email: Soju06 <qlskssk@gmail.com>
|
|
@@ -55,9 +55,13 @@ Description-Content-Type: text/markdown
|
|
|
55
55
|
|
|
56
56
|
Load balancer for ChatGPT accounts. Pool multiple accounts, track usage, view everything in a dashboard.
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
### Main Dashboard View
|
|
59
|
+
|
|
60
|
+

|
|
61
|
+
|
|
62
|
+
### Accounts View
|
|
63
|
+
|
|
64
|
+

|
|
61
65
|
|
|
62
66
|
## Quick Start
|
|
63
67
|
|
|
@@ -78,9 +82,7 @@ uvx codex-lb
|
|
|
78
82
|
|
|
79
83
|
Open [localhost:2455](http://localhost:2455) → Add account → Done.
|
|
80
84
|
|
|
81
|
-
## Accounts view
|
|
82
85
|
|
|
83
|
-

|
|
84
86
|
|
|
85
87
|
## Codex CLI & Extension Setup
|
|
86
88
|
|
|
@@ -102,7 +104,31 @@ requires_openai_auth = true # Required: enables model selection in Codex IDE ex
|
|
|
102
104
|
## Data
|
|
103
105
|
|
|
104
106
|
All data stored in `~/.codex-lb/`:
|
|
107
|
+
|
|
105
108
|
- `store.db` – accounts, usage logs
|
|
106
109
|
- `encryption.key` – encrypts tokens (auto-generated)
|
|
107
110
|
|
|
108
111
|
Backup this directory to preserve your accounts.
|
|
112
|
+
|
|
113
|
+
## Contributors ✨
|
|
114
|
+
|
|
115
|
+
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
|
116
|
+
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
117
|
+
<!-- prettier-ignore-start -->
|
|
118
|
+
<!-- markdownlint-disable -->
|
|
119
|
+
<table>
|
|
120
|
+
<tbody>
|
|
121
|
+
<tr>
|
|
122
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Soju06"><img src="https://avatars.githubusercontent.com/u/34199905?v=4?s=100" width="100px;" alt="Soju06"/><br /><sub><b>Soju06</b></sub></a><br /><a href="https://github.com/Soju06/codex-lb/commits?author=Soju06" title="Code">💻</a> <a href="https://github.com/Soju06/codex-lb/commits?author=Soju06" title="Tests">⚠️</a> <a href="#maintenance-Soju06" title="Maintenance">🚧</a> <a href="#infra-Soju06" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
|
123
|
+
<td align="center" valign="top" width="14.28%"><a href="http://jonas.kamsker.at/"><img src="https://avatars.githubusercontent.com/u/11245306?v=4?s=100" width="100px;" alt="Jonas Kamsker"/><br /><sub><b>Jonas Kamsker</b></sub></a><br /><a href="https://github.com/Soju06/codex-lb/commits?author=JKamsker" title="Code">💻</a> <a href="https://github.com/Soju06/codex-lb/issues?q=author%3AJKamsker" title="Bug reports">🐛</a> <a href="#maintenance-JKamsker" title="Maintenance">🚧</a></td>
|
|
124
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Quack6765"><img src="https://avatars.githubusercontent.com/u/5446230?v=4?s=100" width="100px;" alt="Quack"/><br /><sub><b>Quack</b></sub></a><br /><a href="https://github.com/Soju06/codex-lb/commits?author=Quack6765" title="Code">💻</a> <a href="https://github.com/Soju06/codex-lb/issues?q=author%3AQuack6765" title="Bug reports">🐛</a> <a href="#maintenance-Quack6765" title="Maintenance">🚧</a> <a href="#design-Quack6765" title="Design">🎨</a></td>
|
|
125
|
+
</tr>
|
|
126
|
+
</tbody>
|
|
127
|
+
</table>
|
|
128
|
+
|
|
129
|
+
<!-- markdownlint-restore -->
|
|
130
|
+
<!-- prettier-ignore-end -->
|
|
131
|
+
|
|
132
|
+
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
133
|
+
|
|
134
|
+
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
codex_lb-0.3.1/README.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# codex-lb
|
|
2
|
+
|
|
3
|
+
Load balancer for ChatGPT accounts. Pool multiple accounts, track usage, view everything in a dashboard.
|
|
4
|
+
|
|
5
|
+
### Main Dashboard View
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
### Accounts View
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
### Docker
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
docker run -d --name codex-lb \
|
|
19
|
+
-p 2455:2455 -p 1455:1455 \
|
|
20
|
+
-v ~/.codex-lb:/var/lib/codex-lb \
|
|
21
|
+
ghcr.io/soju06/codex-lb:latest
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### uvx
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
uvx codex-lb
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Open [localhost:2455](http://localhost:2455) → Add account → Done.
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## Codex CLI & Extension Setup
|
|
35
|
+
|
|
36
|
+
Add to `~/.codex/config.toml`:
|
|
37
|
+
|
|
38
|
+
```toml
|
|
39
|
+
model = "gpt-5.2-codex"
|
|
40
|
+
model_reasoning_effort = "xhigh"
|
|
41
|
+
model_provider = "codex-lb"
|
|
42
|
+
|
|
43
|
+
[model_providers.codex-lb]
|
|
44
|
+
name = "OpenAI" # MUST be "OpenAI" - enables /compact endpoint
|
|
45
|
+
base_url = "http://127.0.0.1:2455/backend-api/codex"
|
|
46
|
+
wire_api = "responses"
|
|
47
|
+
chatgpt_base_url = "http://127.0.0.1:2455"
|
|
48
|
+
requires_openai_auth = true # Required: enables model selection in Codex IDE extension
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Data
|
|
52
|
+
|
|
53
|
+
All data stored in `~/.codex-lb/`:
|
|
54
|
+
|
|
55
|
+
- `store.db` – accounts, usage logs
|
|
56
|
+
- `encryption.key` – encrypts tokens (auto-generated)
|
|
57
|
+
|
|
58
|
+
Backup this directory to preserve your accounts.
|
|
59
|
+
|
|
60
|
+
## Contributors ✨
|
|
61
|
+
|
|
62
|
+
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
|
63
|
+
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
64
|
+
<!-- prettier-ignore-start -->
|
|
65
|
+
<!-- markdownlint-disable -->
|
|
66
|
+
<table>
|
|
67
|
+
<tbody>
|
|
68
|
+
<tr>
|
|
69
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Soju06"><img src="https://avatars.githubusercontent.com/u/34199905?v=4?s=100" width="100px;" alt="Soju06"/><br /><sub><b>Soju06</b></sub></a><br /><a href="https://github.com/Soju06/codex-lb/commits?author=Soju06" title="Code">💻</a> <a href="https://github.com/Soju06/codex-lb/commits?author=Soju06" title="Tests">⚠️</a> <a href="#maintenance-Soju06" title="Maintenance">🚧</a> <a href="#infra-Soju06" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
|
70
|
+
<td align="center" valign="top" width="14.28%"><a href="http://jonas.kamsker.at/"><img src="https://avatars.githubusercontent.com/u/11245306?v=4?s=100" width="100px;" alt="Jonas Kamsker"/><br /><sub><b>Jonas Kamsker</b></sub></a><br /><a href="https://github.com/Soju06/codex-lb/commits?author=JKamsker" title="Code">💻</a> <a href="https://github.com/Soju06/codex-lb/issues?q=author%3AJKamsker" title="Bug reports">🐛</a> <a href="#maintenance-JKamsker" title="Maintenance">🚧</a></td>
|
|
71
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Quack6765"><img src="https://avatars.githubusercontent.com/u/5446230?v=4?s=100" width="100px;" alt="Quack"/><br /><sub><b>Quack</b></sub></a><br /><a href="https://github.com/Soju06/codex-lb/commits?author=Quack6765" title="Code">💻</a> <a href="https://github.com/Soju06/codex-lb/issues?q=author%3AQuack6765" title="Bug reports">🐛</a> <a href="#maintenance-Quack6765" title="Maintenance">🚧</a> <a href="#design-Quack6765" title="Design">🎨</a></td>
|
|
72
|
+
</tr>
|
|
73
|
+
</tbody>
|
|
74
|
+
</table>
|
|
75
|
+
|
|
76
|
+
<!-- markdownlint-restore -->
|
|
77
|
+
<!-- prettier-ignore-end -->
|
|
78
|
+
|
|
79
|
+
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
80
|
+
|
|
81
|
+
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|