Native Hermes Agent plugin for X automation through Xquik
Project description
Hermes Tweet
Native Hermes Agent plugin for X automation through Xquik.
Hermes Tweet brings X search, account reads, tweet posting, replies, likes, retweets, follows, DMs, monitors, webhooks, draws, extraction jobs, media, and trend reads into Hermes as structured tools.
Use it when you need a Hermes Agent Twitter plugin, Hermes X automation, social media automation for agents, or a native Hermes toolset for X/Twitter.
Highlights
- Native Hermes plugin with
plugin.yamland pip entry point. - 99 agent-callable Xquik endpoints generated from OpenAPI.
- 32 MPP-tagged read endpoints in the bundled catalog.
- Read and action tools are split for least-privilege operation.
- Action endpoints are disabled by default.
- Bundled Hermes skill for agent-facing usage guidance.
- Slash commands for account status and trends.
- Strict CI with formatting, linting, type checking, tests, coverage, security scan, dependency audit, and package build checks.
Install
From a local checkout:
pip install -e .
hermes plugins enable hermes-tweet
For public distribution:
pip install hermes-tweet
hermes plugins enable hermes-tweet
Configure
Create an API key in the Xquik dashboard, then set:
export XQUIK_API_KEY="xq_..."
Optional settings:
export XQUIK_BASE_URL="https://xquik.com"
export HERMES_TWEET_ENABLE_ACTIONS="false"
Action endpoints are disabled unless HERMES_TWEET_ENABLE_ACTIONS=true.
Security Model
Hermes Tweet never accepts credentials through tool arguments. Auth is read from environment variables and injected by the plugin at request time.
The plugin blocks dashboard-only admin, billing, credit top-up, support-ticket,
API-key, and account re-authentication endpoints from the catalog. Private reads
and write-like endpoints go through tweet_action, which is hidden unless
HERMES_TWEET_ENABLE_ACTIONS=true.
Tools
| Tool | Purpose |
|---|---|
tweet_explore |
Search the bundled Xquik endpoint catalog. No API call. |
tweet_read |
Call catalog-listed read-only endpoints. |
tweet_action |
Call write-like or private endpoints. Disabled by default. |
Use tweet_explore first, then call tweet_read or tweet_action with a
concrete /api/v1/... path.
Slash Commands
| Command | Purpose |
|---|---|
/xstatus |
Show Xquik account, subscription, and usage status. |
/xtrends |
Show current X trends. |
Development
Generate the bundled catalog from Xquik OpenAPI:
python scripts/build_catalog.py ../xquik/openapi.yaml
Run checks:
uv run --python 3.12 --extra dev ruff format --check .
uv run --python 3.12 --extra dev ruff check .
uv run --python 3.12 --extra dev basedpyright
uv run --python 3.12 --extra dev pytest --cov=hermes_tweet --cov=tests --cov-report=term-missing --cov-fail-under=100
uv run --python 3.12 --extra dev bandit -c pyproject.toml -r hermes_tweet scripts
uv run --python 3.12 --extra dev pip-audit
uv run --python 3.12 --extra dev python -m build
uv run --python 3.12 --extra dev twine check dist/*
For a single local quality gate:
uv run --python 3.12 --extra dev ruff format --check . && \
uv run --python 3.12 --extra dev ruff check . && \
uv run --python 3.12 --extra dev basedpyright && \
uv run --python 3.12 --extra dev pytest --cov=hermes_tweet --cov=tests --cov-report=term-missing --cov-fail-under=100 && \
uv run --python 3.12 --extra dev bandit -c pyproject.toml -r hermes_tweet scripts && \
uv run --python 3.12 --extra dev pip-audit && \
uv run --python 3.12 --extra dev python -m build && \
uv run --python 3.12 --extra dev twine check dist/*
Relationship To TweetClaw
TweetClaw is the OpenClaw-native npm plugin. Hermes Tweet is the Hermes-native Python plugin. Both use the same Xquik API contract.
Public Repo Metadata
Recommended GitHub description:
Native Hermes Agent plugin for X/Twitter automation through Xquik.
Recommended topics:
hermes-agent, hermes-plugin, hermes, twitter, x, x-api,
x-automation, xquik, tweet, automation, social-media,
social-media-automation, ai-agent, mcp, agent-tools, twitter-api,
twitter-automation, x-twitter, apify, python
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 hermes_tweet-0.1.0.tar.gz.
File metadata
- Download URL: hermes_tweet-0.1.0.tar.gz
- Upload date:
- Size: 21.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f99349135607c2a3f8250d3568802500c88c339eae40544920436e9217daaeb2
|
|
| MD5 |
433289f6d99d015c414234981234ce1e
|
|
| BLAKE2b-256 |
e2a53992472b29b4470e03df74460c94cdadcc7987f3d78556d1e76792c613e4
|
Provenance
The following attestation bundles were made for hermes_tweet-0.1.0.tar.gz:
Publisher:
publish.yml on Xquik-dev/hermes-tweet
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_tweet-0.1.0.tar.gz -
Subject digest:
f99349135607c2a3f8250d3568802500c88c339eae40544920436e9217daaeb2 - Sigstore transparency entry: 1444212024
- Sigstore integration time:
-
Permalink:
Xquik-dev/hermes-tweet@530554c98898d518ea23392cb99496ac5693b0c0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Xquik-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@530554c98898d518ea23392cb99496ac5693b0c0 -
Trigger Event:
release
-
Statement type:
File details
Details for the file hermes_tweet-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hermes_tweet-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.5 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 |
6be384848fb7ca8709d8f4bd66da15bd987997f920a923076883fb19ad432c48
|
|
| MD5 |
f141d7de5b03e8bc1a71cd5d1cf4a43c
|
|
| BLAKE2b-256 |
6582d0791a068808c3bdca214e375a2023ad5a3aee74a946c4b19abb6af5e43b
|
Provenance
The following attestation bundles were made for hermes_tweet-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on Xquik-dev/hermes-tweet
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_tweet-0.1.0-py3-none-any.whl -
Subject digest:
6be384848fb7ca8709d8f4bd66da15bd987997f920a923076883fb19ad432c48 - Sigstore transparency entry: 1444212378
- Sigstore integration time:
-
Permalink:
Xquik-dev/hermes-tweet@530554c98898d518ea23392cb99496ac5693b0c0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Xquik-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@530554c98898d518ea23392cb99496ac5693b0c0 -
Trigger Event:
release
-
Statement type: