Skip to main content

Agent Smithers Matrix bot (modular)

Project description

Agent Smithers

Agent Smithers is an agentic AI assistant for the Matrix chat protocol using the Responses API format for OpenAI, xAI, or local models through LM Studio. It keeps separate conversation history for each user, lets people choose their own models and personas. It also supports search and code execution tools, remote MCP servers, and image or video features such as Grok Imagine and Sora. It even has GPT-4o available, if you miss that model.

This is a fork of inifinigpt-matrix

Table of Contents

Quick Start

pip install .
cp .env.example .env
# Edit .env — set MATRIX_*, DEFAULT_MODEL, and at least one provider key
agent-smithers --env-file .env

Or without installing the package:

pip install -r requirements.txt
python -m agent_smithers --env-file .env

Documentation

Full documentation lives in the docs/ folder:

Commands

Send these in any room the bot has joined.

User commands

Command What it does
.ai <message> Chat with the bot using your conversation history
BotName: <message> Same as .ai — address by name
.x <user> <message> Send a message into another user's conversation context
.persona <text> Set a personality using the configured prompt wrapper
.custom <prompt> Replace your system prompt with arbitrary text
.reset Clear your history and restore the default persona
.stock Clear your history and run without any system prompt
.mymodel [name] Show your current model, or set a per-user override
.location [place] Show, set, or clear your location (added to system prompt)
.help Show inline help (reads help.md if present)

Admin commands

Admins are set via MATRIX_ADMINS in .env.

Command What it does
.model [name|reset] Show available models, or change the active model globally
.tools [on|off|toggle|status] Enable or disable hosted tools and MCP at runtime
.clear Reset history and defaults for all users
.verbose [on|off|toggle] Control whether the brevity clause is included in new conversations

Conversation Persistence

Conversation history can be encrypted and saved to disk so it survives restarts. Generate a key and add it to .env:

agent-smithers --generate-key
# Paste the output into .env as HISTORY_ENCRYPTION_KEY

History is stored in store/history.enc alongside the Matrix device state. Without a key, history remains in-memory only (the default).

Configuration

Copy .env.example to .env. Minimum required variables:

MATRIX_SERVER=https://matrix.org
MATRIX_USERNAME=@bot:example.org
MATRIX_PASSWORD=secret
MATRIX_CHANNELS=!roomid:example.org
DEFAULT_MODEL=gpt-4o
OPENAI_API_KEY=sk-...

See docs/configuration.md for all variables, including LM Studio, MCP servers, tool toggles, history size, and E2E encryption settings.

E2E Encryption

The bot supports end-to-end encrypted Matrix rooms via matrix-nio[e2e]. This requires libolm to be available. Persist the store/ directory (or whatever MATRIX_STORE_PATH points to) across restarts to retain device keys. See docs/operations.md for verification and troubleshooting.

Contributing

See CONTRIBUTING.md for the contribution process and code style guide.

License

AGPL-3.0 — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agent_smithers-1.2.0.tar.gz (79.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agent_smithers-1.2.0-py3-none-any.whl (66.9 kB view details)

Uploaded Python 3

File details

Details for the file agent_smithers-1.2.0.tar.gz.

File metadata

  • Download URL: agent_smithers-1.2.0.tar.gz
  • Upload date:
  • Size: 79.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agent_smithers-1.2.0.tar.gz
Algorithm Hash digest
SHA256 9c360e9300eda5c28c9f61605c9ab84c8c2e2de588cbab49a036fdbf949028f9
MD5 6b86a95a1c141056b7cc54e9c291a736
BLAKE2b-256 950812dd9b733061098f0043281f0b5ebd5f6e41cf83a5d254d8d00d62e11c83

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_smithers-1.2.0.tar.gz:

Publisher: pypi-publish.yml on h1ddenpr0cess20/agent-smithers

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agent_smithers-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: agent_smithers-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 66.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agent_smithers-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2e9db45352c40039862bc2dc5b967a1e0fe01e9bc553005cbc45e93e34433a47
MD5 6e2688990571b79b52acc7836f1f4b88
BLAKE2b-256 057b167e87cc94802f7c5f3d4011ea5b4a5b400ba25810f4ad69e94849db060e

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_smithers-1.2.0-py3-none-any.whl:

Publisher: pypi-publish.yml on h1ddenpr0cess20/agent-smithers

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page