Skip to main content

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

python -m pip install evecli-llm

For local development:

pip install -e .

Quick Start

1. Create an EVE Online Application

  1. Log in to the EVE Online Developer Portal
  2. Create a new application with a callback URL of http://127.0.0.1:8088/callback
  3. 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.

If evecli is running on a server or inside an agent environment without a usable browser, use manual mode instead:

evecli auth login --mode manual --client-id <client-id> --secret <secret-key>

This prints an EVE SSO authorization URL. Have the user open that URL on their own machine, complete the login, then copy either the full callback URL from the browser address bar or just the code query parameter back to the agent. The agent completes login with:

evecli auth login --mode manual --client-id <client-id> --secret <secret-key> --code '<callback-url-or-code>'

The manual flow uses the same registered callback URL. If the browser shows a failed localhost page after login, that is expected in remote mode; copy the URL from the address bar and submit it back to the agent. If you register a different callback port in the EVE developer portal, pass the same port to evecli auth login --port <port> in both manual steps.

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, with --mode browser or --mode manual
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

Metadata

Release files for evecli-llm 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evecli-llm 0.1.1
File Size Uploaded Provenance
evecli_llm-0.1.1.tar.gz 12.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for evecli-llm 0.1.1
File Interpreter ABI Platform
evecli_llm-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 25.4 kB

Release files / evecli_llm-0.1.1.tar.gz

Download URL evecli_llm-0.1.1.tar.gz
Size 12.6 kB
Tags Source
SHA-256 checksum
How to use checksums
36f64cb0f010cfd0c8a4ec58b435ff30f34bb56fb751a35efb77cbeebebc59c0
BLAKE2b-256 checksum
How to use checksums
5247644ff63cc0f05b560039a1118fde8f1279523788d36fa1123822683ca106
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / evecli_llm-0.1.1-py3-none-any.whl

Download URL evecli_llm-0.1.1-py3-none-any.whl
Size 12.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b6545abd4aa9a87d731287893e0ac1888e0d9a9927df418d7de66a10986c45e9
BLAKE2b-256 checksum
How to use checksums
6cc0dd5948ae6f1d1d5283e4c99504544563758365aa8f4b3ec071a1a9678787
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Security for evecli-llm 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for evecli_llm-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page