Big update
This commit is contained in:
parent
8b607dd700
commit
2e6afc460b
474 changed files with 934 additions and 86159 deletions
53
README.md
53
README.md
|
|
@ -1 +1,54 @@
|
|||
# Vibe Proxy
|
||||
|
||||
Vibe Proxy connects multiple OpenAI Codex OAuth accounts, displays their quotas, and exposes them through an OpenAI-compatible API.
|
||||
|
||||
The management UI is available at `/management.html`. It supports adding and removing Codex accounts and refreshing their quota. Proxy API keys and server settings are deployment configuration, not UI settings.
|
||||
|
||||
## Endpoints
|
||||
|
||||
- `GET /v1/models`
|
||||
- `POST /v1/chat/completions`
|
||||
- `POST /v1/responses`
|
||||
- `GET /v1/responses` for WebSocket transport
|
||||
- `GET /healthz`
|
||||
|
||||
## NixOS
|
||||
|
||||
Add the module and package from the flake:
|
||||
|
||||
```nix
|
||||
{
|
||||
inputs.vibe-proxy.url = "github:methanium/vibe-proxy";
|
||||
|
||||
outputs = { nixpkgs, vibe-proxy, ... }: {
|
||||
nixosConfigurations.host = nixpkgs.lib.nixosSystem {
|
||||
modules = [
|
||||
vibe-proxy.nixosModules.default
|
||||
({ ... }: {
|
||||
services.vibe-proxy = {
|
||||
enable = true;
|
||||
host = "127.0.0.1";
|
||||
port = 8317;
|
||||
settings.api-keys = [ "replace-with-a-random-api-key" ];
|
||||
environmentFiles = [ "/run/secrets/vibe-proxy" ];
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
The environment file should contain:
|
||||
|
||||
```sh
|
||||
MANAGEMENT_PASSWORD=replace-with-a-random-management-key
|
||||
```
|
||||
|
||||
The module stores OAuth credentials under `/var/lib/vibe-proxy/auths` by default. Set `openFirewall = true` only when the service should be reachable directly from other machines.
|
||||
|
||||
Build or run the combined package with `nix build` or `nix run`.
|
||||
|
||||
## Other deployments
|
||||
|
||||
Copy `backend/config.example.yaml` to `config.yaml`, replace the example API key, and set `MANAGEMENT_PASSWORD`. Docker Compose and the standalone binary both use local JSON credential storage.
|
||||
|
|
|
|||
Loading…
Reference in a new issue