mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-26 01:01:40 +00:00
docs: document MiniMax OAuth login flow
Add comprehensive documentation for the minimax-oauth provider.
New file: website/docs/guides/minimax-oauth.md
- Overview table (provider ID, auth type, models, endpoints)
- Quick start via 'hermes model'
- Manual login via 'hermes auth add minimax-oauth'
- --region global|cn flag reference
- The PKCE OAuth flow explained step-by-step
- hermes doctor output example
- Configuration reference (config.yaml shape, region table, aliases)
- Environment variables note: MINIMAX_API_KEY is NOT used by
minimax-oauth (OAuth path uses browser login)
- Models table with context length note
- Troubleshooting section: expired token, timeout, state mismatch,
headless/remote sessions, not logged in
- Logout command
Updated: website/docs/getting-started/quickstart.md
- Add MiniMax (OAuth) to provider picker table as the recommended
path for users who want MiniMax models without an API key
Updated: website/docs/user-guide/configuration.md
- Add 'minimax-oauth' to the auxiliary providers list
- Add MiniMax OAuth tip callout in the providers section
- Add minimax-oauth row to the provider table (auxiliary tasks)
- Add MiniMax OAuth config.yaml example in Common Setups
Updated: website/docs/reference/environment-variables.md
- Annotate MINIMAX_API_KEY, MINIMAX_BASE_URL, MINIMAX_CN_API_KEY,
MINIMAX_CN_BASE_URL as NOT used by minimax-oauth
- Add minimax-oauth to HERMES_INFERENCE_PROVIDER allowed values
This commit is contained in:
parent
3c6a9dab35
commit
91eefcd1a3
4 changed files with 245 additions and 6 deletions
224
website/docs/guides/minimax-oauth.md
Normal file
224
website/docs/guides/minimax-oauth.md
Normal file
|
|
@ -0,0 +1,224 @@
|
|||
---
|
||||
sidebar_position: 15
|
||||
title: "MiniMax OAuth"
|
||||
description: "Log into MiniMax via browser OAuth and use MiniMax-M2.7 models in Hermes Agent — no API key required"
|
||||
---
|
||||
|
||||
# MiniMax OAuth
|
||||
|
||||
Hermes Agent supports **MiniMax** through a browser-based OAuth login flow, using the same credentials as the [MiniMax portal](https://www.minimax.io). No API key or credit card is required — log in once and Hermes automatically refreshes your session.
|
||||
|
||||
The transport reuses the `anthropic_messages` adapter (MiniMax exposes an Anthropic Messages-compatible endpoint at `/anthropic`), so all existing tool-calling, streaming, and context features work without any adapter changes.
|
||||
|
||||
## Overview
|
||||
|
||||
| Item | Value |
|
||||
|------|-------|
|
||||
| Provider ID | `minimax-oauth` |
|
||||
| Display name | MiniMax (OAuth) |
|
||||
| Auth type | Browser OAuth (PKCE device-code flow) |
|
||||
| Transport | Anthropic Messages-compatible (`anthropic_messages`) |
|
||||
| Models | `MiniMax-M2.7`, `MiniMax-M2.7-highspeed` |
|
||||
| Global endpoint | `https://api.minimax.io/anthropic` |
|
||||
| China endpoint | `https://api.minimaxi.com/anthropic` |
|
||||
| Requires env var | No (`MINIMAX_API_KEY` is **not** used for this provider) |
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Python 3.9+
|
||||
- Hermes Agent installed
|
||||
- A MiniMax account at [minimax.io](https://www.minimax.io) (global) or [minimaxi.com](https://www.minimaxi.com) (China)
|
||||
- A browser available on the local machine (or use `--no-browser` for remote sessions)
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Launch the provider and model picker
|
||||
hermes model
|
||||
# → Select "MiniMax (OAuth)" from the provider list
|
||||
# → Hermes opens your browser to the MiniMax authorization page
|
||||
# → Approve access in the browser
|
||||
# → Select a model (MiniMax-M2.7 or MiniMax-M2.7-highspeed)
|
||||
# → Start chatting
|
||||
|
||||
hermes
|
||||
```
|
||||
|
||||
After the first login, credentials are stored under `~/.hermes/auth.json` and are refreshed automatically before each session.
|
||||
|
||||
## Logging In Manually
|
||||
|
||||
You can trigger a login without going through the model picker:
|
||||
|
||||
```bash
|
||||
hermes auth add minimax-oauth
|
||||
```
|
||||
|
||||
### China region
|
||||
|
||||
If your account is on the China platform (`minimaxi.com`), pass `--region cn`:
|
||||
|
||||
```bash
|
||||
hermes auth add minimax-oauth --region cn
|
||||
```
|
||||
|
||||
### Remote / headless sessions
|
||||
|
||||
On servers or containers where no browser is available:
|
||||
|
||||
```bash
|
||||
hermes auth add minimax-oauth --no-browser
|
||||
```
|
||||
|
||||
Hermes will print the verification URL and user code — open the URL on any device and enter the code when prompted.
|
||||
|
||||
## The OAuth Flow
|
||||
|
||||
Hermes implements a PKCE device-code flow against the MiniMax OAuth endpoints:
|
||||
|
||||
1. Hermes generates a PKCE verifier / challenge pair and a random state value.
|
||||
2. It POSTs to `{base_url}/oauth/code` with the challenge and receives a `user_code` and `verification_uri`.
|
||||
3. Your browser opens `verification_uri`. If prompted, enter the `user_code`.
|
||||
4. Hermes polls `{base_url}/oauth/token` until the token arrives (or the deadline passes).
|
||||
5. Tokens (`access_token`, `refresh_token`, expiry) are saved to `~/.hermes/auth.json` under the `minimax-oauth` key.
|
||||
|
||||
Token refresh (standard OAuth `refresh_token` grant) runs automatically at each session start when the access token is within 60 seconds of expiry.
|
||||
|
||||
## Checking Login Status
|
||||
|
||||
```bash
|
||||
hermes doctor
|
||||
```
|
||||
|
||||
The `◆ Auth Providers` section will show:
|
||||
|
||||
```
|
||||
✓ MiniMax OAuth (logged in, region=global)
|
||||
```
|
||||
|
||||
or, if not logged in:
|
||||
|
||||
```
|
||||
⚠ MiniMax OAuth (not logged in)
|
||||
```
|
||||
|
||||
## Switching Models
|
||||
|
||||
```bash
|
||||
hermes model
|
||||
# → Select "MiniMax (OAuth)"
|
||||
# → Pick from the model list
|
||||
```
|
||||
|
||||
Or set the model directly:
|
||||
|
||||
```bash
|
||||
hermes config set model MiniMax-M2.7
|
||||
hermes config set provider minimax-oauth
|
||||
```
|
||||
|
||||
## Configuration Reference
|
||||
|
||||
After login, `~/.hermes/config.yaml` will contain entries similar to:
|
||||
|
||||
```yaml
|
||||
model:
|
||||
default: MiniMax-M2.7
|
||||
provider: minimax-oauth
|
||||
base_url: https://api.minimax.io/anthropic
|
||||
```
|
||||
|
||||
### `--region` flag
|
||||
|
||||
| Value | Portal | Inference endpoint |
|
||||
|-------|--------|-------------------|
|
||||
| `global` (default) | `https://api.minimax.io` | `https://api.minimax.io/anthropic` |
|
||||
| `cn` | `https://api.minimaxi.com` | `https://api.minimaxi.com/anthropic` |
|
||||
|
||||
### Provider aliases
|
||||
|
||||
All of the following resolve to `minimax-oauth`:
|
||||
|
||||
```bash
|
||||
hermes --provider minimax-oauth # canonical
|
||||
hermes --provider minimax-portal # alias
|
||||
hermes --provider minimax-global # alias
|
||||
hermes --provider minimax_oauth # alias (underscore form)
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
The `minimax-oauth` provider does **not** use `MINIMAX_API_KEY` or `MINIMAX_BASE_URL`. Those variables are for the API-key-based `minimax` and `minimax-cn` providers only.
|
||||
|
||||
| Variable | Effect |
|
||||
|----------|--------|
|
||||
| `MINIMAX_API_KEY` | Used by `minimax` provider only — ignored for `minimax-oauth` |
|
||||
| `MINIMAX_CN_API_KEY` | Used by `minimax-cn` provider only — ignored for `minimax-oauth` |
|
||||
|
||||
To force the `minimax-oauth` provider at runtime:
|
||||
|
||||
```bash
|
||||
HERMES_INFERENCE_PROVIDER=minimax-oauth hermes
|
||||
```
|
||||
|
||||
## Models
|
||||
|
||||
| Model | Best for |
|
||||
|-------|----------|
|
||||
| `MiniMax-M2.7` | Long-context reasoning, complex tool-calling |
|
||||
| `MiniMax-M2.7-highspeed` | Lower latency, lighter tasks, auxiliary calls |
|
||||
|
||||
Both models support up to 200,000 tokens of context.
|
||||
|
||||
`MiniMax-M2.7-highspeed` is also used automatically as the auxiliary model for vision and delegation tasks when `minimax-oauth` is the primary provider.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Token expired — not re-logging in automatically
|
||||
|
||||
Hermes refreshes the token on every session start if it is within 60 seconds of expiry. If the access token is already expired (for example, after a long offline period), the refresh happens automatically on the next request. If refresh fails with `refresh_token_reused` or `invalid_grant`, Hermes marks the session as requiring re-login.
|
||||
|
||||
**Fix:** run `hermes auth add minimax-oauth` again to start a fresh login.
|
||||
|
||||
### Authorization timed out
|
||||
|
||||
The device-code flow has a finite expiry window. If you don't approve the login in time, Hermes raises a timeout error.
|
||||
|
||||
**Fix:** re-run `hermes auth add minimax-oauth` (or `hermes model`). The flow starts fresh.
|
||||
|
||||
### State mismatch (possible CSRF)
|
||||
|
||||
Hermes detected that the `state` value returned by the authorization server does not match what it sent.
|
||||
|
||||
**Fix:** re-run the login. If it persists, check for a proxy or redirect that is modifying the OAuth response.
|
||||
|
||||
### Logging in from a remote server
|
||||
|
||||
If `hermes` cannot open a browser window, use `--no-browser`:
|
||||
|
||||
```bash
|
||||
hermes auth add minimax-oauth --no-browser
|
||||
```
|
||||
|
||||
Hermes prints the URL and code. Open the URL on any device and complete the flow there.
|
||||
|
||||
### "Not logged into MiniMax OAuth" error at runtime
|
||||
|
||||
The auth store has no credentials for `minimax-oauth`. You have not logged in yet, or the credential file was deleted.
|
||||
|
||||
**Fix:** run `hermes model` and select MiniMax (OAuth), or run `hermes auth add minimax-oauth`.
|
||||
|
||||
## Logging Out
|
||||
|
||||
To remove stored MiniMax OAuth credentials:
|
||||
|
||||
```bash
|
||||
hermes auth remove minimax-oauth
|
||||
```
|
||||
|
||||
## See Also
|
||||
|
||||
- [AI Providers reference](../integrations/providers.md)
|
||||
- [Environment Variables](../reference/environment-variables.md)
|
||||
- [Configuration](../user-guide/configuration.md)
|
||||
- [hermes doctor](../reference/cli-commands.md)
|
||||
Loading…
Add table
Add a link
Reference in a new issue