A CLI backend for LLM assistants to manage EVE Online via the ESI API
Project description
evecli
A CLI backend for LLM assistants to manage EVE Online game data via the ESI API. This is a completely vibe coding project, please use with caution.
Purpose
evecli is designed to be used by AI coding assistants (Claude Code, etc.) as a tool skill. Rather than having the LLM call ESI API endpoints directly, it dispatches structured CLI commands through a skill definition. This provides:
- Safe abstraction — the skill document (
.claude/skills/*/SKILL.md) tells the LLM exactly what it can and can't do - Consistent JSON output — all commands return machine-parseable JSON by default, making it easy for the LLM to present results to the user
- Built-in auth — OAuth2 SSO with automatic token refresh, transparent to the LLM
The human user interacts with the LLM in natural language, and the LLM translates those requests into evecli commands.
Architecture
User (natural language)
↓
LLM assistant (Claude Code + skills)
↓
skill definition (.claude/skills/eve-mail/SKILL.md)
↓
evecli CLI commands
↓
EVE Online ESI API
Installation
pip install -e .
Quick Start
1. Create an EVE Online Application
- Log in to the EVE Online Developer Portal
- Create a new application with a callback URL of
http://localhost:6480/callback - Copy the Client ID and Secret Key
2. Authenticate
evecli auth login --client-id <client-id> --secret <secret-key>
This opens a browser for EVE Online OAuth2 authorization. Tokens are stored at ~/.config/evecli/tokens.json and refreshed automatically.
3. Let Your LLM Assist Manage EVE
Once authenticated, ask your LLM assistant to help with EVE tasks:
- "Check my recent unread mails"
- "Read mail #12345 and summarize it"
- "Send a mail to character 90123456 with subject 'Hello' and body '...'"
- "Delete all mails older than list item #5"
The LLM will use the eve-mail skill to execute the appropriate evecli commands and present results back to you.
Commands
| Command | Description |
|---|---|
evecli auth login |
Authenticate via EVE SSO OAuth2 |
evecli auth status |
Show auth status and token expiry |
evecli auth logout |
Remove stored tokens |
evecli auth character |
Show authenticated character info |
evecli mail list |
List recent mails |
evecli mail read <id> |
Read a single mail |
evecli mail send |
Send a new mail (body supports HTML) |
evecli mail delete <ids> |
Delete mail(s) |
evecli mail label |
Manage mail labels (list/create/delete) |
evecli mail update <id> |
Update read status or labels |
All commands support --format json (default) and --format plain.
Skills
Skills are defined in .claude/skills/*/SKILL.md and loaded by Claude Code automatically. The skill document tells the LLM:
- What capabilities are available
- Exact command syntax and parameters
- Common workflows (check unread, reply to mail, etc.)
- Expected output format for parsing
To add new capabilities, create a new skill directory under .claude/skills/ with a SKILL.md following the same pattern.
Tech Stack
- Click — CLI framework
- httpx — HTTP client for ESI API requests
- Pydantic — Data validation
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file evecli_llm-0.1.0.tar.gz.
File metadata
- Download URL: evecli_llm-0.1.0.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f54ca80e3af40ac5a5e556561bd7b9b63e199dea597fb32d0067b7c69fcd4c3
|
|
| MD5 |
6f54ef085561001cf785e9c81d0c44e8
|
|
| BLAKE2b-256 |
9ae969d2b34dfc1db34698d92f989f3a72f66f51fcb921c37b3ce2311cda99d1
|
Provenance
The following attestation bundles were made for evecli_llm-0.1.0.tar.gz:
Publisher:
python-publish.yml on Ranxy/evecli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evecli_llm-0.1.0.tar.gz -
Subject digest:
2f54ca80e3af40ac5a5e556561bd7b9b63e199dea597fb32d0067b7c69fcd4c3 - Sigstore transparency entry: 1255876992
- Sigstore integration time:
-
Permalink:
Ranxy/evecli@ad1a1ad88af9fe4f90dd6f21be9cac66e2e9a1a1 -
Branch / Tag:
refs/tags/v0.1.0-alpha2 - Owner: https://github.com/Ranxy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@ad1a1ad88af9fe4f90dd6f21be9cac66e2e9a1a1 -
Trigger Event:
release
-
Statement type:
File details
Details for the file evecli_llm-0.1.0-py3-none-any.whl.
File metadata
- Download URL: evecli_llm-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0f758d1ce411f2592b3782af509768064263c48f4d2778e275358a4c54f4468
|
|
| MD5 |
ab432873ffefb00c640af286a45b82b5
|
|
| BLAKE2b-256 |
f9df8bf451c86e5a3aa509eda7a016f1c794504a94fe1c1d43503c6887fa7aa4
|
Provenance
The following attestation bundles were made for evecli_llm-0.1.0-py3-none-any.whl:
Publisher:
python-publish.yml on Ranxy/evecli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evecli_llm-0.1.0-py3-none-any.whl -
Subject digest:
b0f758d1ce411f2592b3782af509768064263c48f4d2778e275358a4c54f4468 - Sigstore transparency entry: 1255877047
- Sigstore integration time:
-
Permalink:
Ranxy/evecli@ad1a1ad88af9fe4f90dd6f21be9cac66e2e9a1a1 -
Branch / Tag:
refs/tags/v0.1.0-alpha2 - Owner: https://github.com/Ranxy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@ad1a1ad88af9fe4f90dd6f21be9cac66e2e9a1a1 -
Trigger Event:
release
-
Statement type: