Skip to main content

amoorion

amoorion

One heart for all your conversations.
Universal tool for administration of chatting and communication platforms

web page · documentation · PyPI · GitHub

check release publish gh-pages


Getting started

documentation: https://amoorion.readthedocs.io

pip install amoorion amoorion-bluesky        # the core and the platforms you use
amoorion                                     # asks step by step what to do
amoorion publish --text "hello" --to dryrun  # dryrun sends nothing: try it first

What it does

Amoorion's cupid bot
  • Publish: write once, post to every platform you name.
  • Read & reply: read what came in, in one inbox, and answer from there.
  • Keep: every profile's posts as JSON files in dataset/; delete keeps a copy of what it removes.
  • Connect: link the platforms with each other and with the services around them (webhooks, ntfy, NATS, e-mail: phase 5 of the plan).
Platform Package Post Read Reply Delete
Bluesky amoorion-bluesky ✓ ✓ ✓ ✓
Mastodon amoorion-mastodon ✓ ✓ ✓ ✓
ntfy amoorion-ntfy ✓ ✓
E-mail amoorion-email ✓ ✓ ✓
X (twitter) amoorion-x ✓ ✓ ✓ ✓
Tumblr amoorion-tumblr ✓ ✓ ✓
Blogger (by mail) amoorion-blogger ✓
Facebook Page amoorion-facebook ✓ ✓ ✓ (comment) ✓
Discord bot / webhook amoorion-discord ✓ ✓ (bot) ✓ (bot) ✓
Telegram bot amoorion-telegram ✓ ✓ ✓ ✓
Matrix room amoorion-matrix ✓ ✓ ✓ ✓ (redact)

Early stage: every platform is tested against fakes of its API; trying them against real accounts is under way.

How it is built

One core (model, view, controller) and namespaces on it: plugins (one per platform), methods (what amoorion can do), and the faces that expose the methods: CLI, HTTP API, MCP server for AI agents, and a daemon for long-running services. Secrets come only from a vault (Bitwarden / Vaultwarden, HashiCorp Vault / OpenBao, or a KeePassXC file); .env holds just the link to it. Each platform is its own package in packages/ (a uv workspace). Details: docs/structure.md, writing a plugin: docs/plugins.md.

Usage

uv sync
cp example.env .env                          # the link to the vault

uv run amoorion                              # asks step by step what to do (or: amoorion -i)
uv run amoorion plugins                      # platforms and what they can do
uv run amoorion accounts                     # which have their secrets in the vault
uv run amoorion publish --text "hello" --to dryrun bluesky
uv run amoorion --json read --platform bluesky
uv run amoorion reply --platform bluesky --to "at://…" --text "thanks"
uv run amoorion inbox                        # everything read or received so far
uv run amoorion snapshot --platform bluesky  # its posts into dataset/bluesky/<profile>/ (JSON, indexed)
uv run amoorion delete --platform bluesky --id "at://…"   # keeps a copy in the dataset first
uv run task help                             # help of every command

uv run amoorion api                          # HTTP API on 127.0.0.1:8000
uv run amoorion mcp                          # MCP server (stdio) for agents
uv run amoorion daemon                       # long-running services

The API needs the secret api/token in the vault (sent as Authorization: Bearer), and every hook its own secret; without them they refuse calls. Where each backend keeps a secret: docs/structure.md. Each platform's secrets are listed in its package's README, e.g. packages/amoorion-bluesky.

Run locally first; a Dockerfile and compose come next (phase 6 of the plan).

Development

uv run task init               # tools, git hooks, .env, then check
uv run task vault:new          # KeePassXC: the file of AMOORION_VAULT_PATH, an empty entry per platform
uv run task vault:status       # the vault's state, and which platforms have their secrets
uv run task vault:tools        # Bitwarden instead: bw by npm into tools/, then vault:login
uv run task check              # tests, YAML, commit messages, docs (= CI)
uv run task docs:build         # the docs site into docs/_build/html
uv run task plugin:new -- <platform> <Class> "<description>"   # a new platform
uv run task test:connect       # read-only: log in to every platform with its secrets, read a few posts
uv run task test:live          # a real test post on each (or: -- bluesky mastodon), read, replied, deleted

Examples of usage: Jupyter notebooks in examples/ (uv run task examples:build makes marimo notebooks and pages of them). The docs (this README, the guides, the plan and an API reference generated from the code) are built by Sphinx from docs/ for Read the Docs. Plan and open questions: docs/devlog/. Guide for agents and contributors: AGENTS.md.

Reference

License

Free, under the MIT License, © 2024–present Sett Sarverott: LICENSE, https://sett.mit-license.org

For agents

amoorion comes with an agent skill: amoorion --json skill gives it to any agent. In Claude Code:

/plugin install amoorion --marketplace Sarverott/amoorion

Metadata

Release files for amoorion 0.4.25

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

Source distribution (sdist)

Source distribution for amoorion 0.4.25
File Size Uploaded Provenance Actions
amoorion-0.4.25.tar.gz 61.2 kB Without provenance Details for amoorion-0.4.25.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for amoorion 0.4.25
File Interpreter ABI Platform Actions
amoorion-0.4.25-py3-none-any.whl Python 3 none any Details for amoorion-0.4.25-py3-none-any.whl

Total release size: 150.8 kB

Release files / amoorion-0.4.25.tar.gz

Download URL amoorion-0.4.25.tar.gz
Size 61.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c6edc06b5a09c27cc5a6dd599f7da877f12dd52ff4446fe53713d3bfb6b49431
BLAKE2b-256 checksum
How to use checksums
f96db630aab63e6d0edac99addc96a920f26e619ef1dac17c78f6eb13a932027
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / amoorion-0.4.25-py3-none-any.whl

Download URL amoorion-0.4.25-py3-none-any.whl
Size 89.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f14563a25494991b594c9f687a1c2d7e170cdd2025fbd5ea1362b671d71bf31
BLAKE2b-256 checksum
How to use checksums
c8f699a8c4bd3ca9af02315a5ca9028d5f89b4457d5570b80eb5112299af2c6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for amoorion 0.4.25

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.4.25 This release

2 release files No 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