Skip to content

anilist

Authorize AniList locally and store the access token in the OS keychain.

manifold login anilist [flags]

Local authorization-code OAuth for CLI commands that talk to AniList (migrations, reconcile, registry import/prefill, anilist wipe manga, and pas5 create --source anilist). Prefer this over pasting pin tokens.

Setup

  1. Create a separate AniList developer client at anilist.co/settings/developer.

  2. Set the redirect URI to exactly http://127.0.0.1:8767/callback.

  3. Provide the client id and secret via one of:

    • flags (--client-id / --client-secret)
    • cli/.env / process env (MANIFOLD_ANILIST_CLIENT_ID / MANIFOLD_ANILIST_CLIENT_SECRET)
    • interactive prompt on a TTY (compiled binary with no env file) — values are stored in the OS keychain under manifold / anilist-oauth-client
    • already-saved keychain entry from a prior login

Do not reuse the shared implicit clients:

  • 49218 (CLI app, localhost callback)
  • the Worker app 49060 (PIN flow)

The CLI needs an authorization-code client with the loopback redirect above.

Flags

--client-id <id>

AniList CLI client ID. Falls back to MANIFOLD_ANILIST_CLIENT_ID, then the OS keychain, then an interactive prompt on a TTY.

Example:

manifold login anilist --client-id "$MANIFOLD_ANILIST_CLIENT_ID"

--client-secret <secret>

AniList CLI client secret. Falls back to MANIFOLD_ANILIST_CLIENT_SECRET, then the OS keychain, then an interactive prompt on a TTY.

--paste-only

Skip binding the local callback server. Use on headless hosts (SSH boxes, CI with a TTY) when the browser runs elsewhere: open the printed authorize URL on another machine (or press c to copy it), press Enter, then paste either the authorization code or the full callback URL from the address bar (http://127.0.0.1:8767/callback?code=…&state=…). A connection-refused page is expected — copy the URL anyway.

Example:

manifold login anilist --paste-only

Usage

manifold login anilist

Bare command on a TTY (no flags): runs a setup wizard first — prints redirect URI / developer-app notes, then asks for client id, client secret, and whether to use --paste-only. Enter keeps defaults from env or the OS keychain. Client credentials are saved under manifold / anilist-oauth-client.

You can also use Effect CLI’s global walkthrough:

manifold --wizard login anilist

The command then prints a browser authorization URL. On a TTY: press c to copy the URL, Enter to paste a code or callback URL, Ctrl+C to cancel. By default it also serves http://127.0.0.1:8767/callback for up to five minutes and races that loopback against paste. If the port is busy, it falls back to paste-only automatically.

After the code arrives, it exchanges for an access token, validates it with a Viewer query, and stores the session in the OS keychain under manifold / anilist-session.

AniList does not issue refresh tokens. When the session expires, run login again. Optionally set MANIFOLD_ANILIST_TOKEN to override the keychain without expiry tracking (useful for one-off scripts). If that env var is set after login, the CLI warns that it still takes precedence.

Downstream commands resolve credentials as: flag → MANIFOLD_ANILIST_TOKEN → keychain.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close