Skip to main content

myOrb

myOrb is your personal AI-powered daily briefing dashboard. It connects to email, calendar, tasks, finances and other third-party services, then uses AI to summarize what matters today: unread and new emails, upcoming events, open TODOs, spending and more. Self-hosted, extensible with plugins and written in Python.

🚧 Work in progress.

Your assistant is yours to name: call it J.A.R.V.I.S., Iris, HAL 9000 or anything else at setup, and it greets you, sits in the middle of the orb and writes your brief under that name.

Run on your computer

You need uv (it installs the right Python by itself).

git clone https://github.com/eriktelepovsky/myorb.git
cd myorb
uv sync
uv run myorb serve

Open http://localhost:8000 and choose a password. Data (the SQLite database and the encryption key) is stored in ./data.

Settings come from MYORB_* environment variables or a .env file in the project directory, e.g.:

MYORB_TIMEZONE=Europe/Bratislava

Local domain

To open myOrb at http://myorb.localhost instead, run it on port 80 with uv run myorb serve --host 0.0.0.0 --port 80, or put MYORB_HOST=0.0.0.0 and MYORB_PORT=80 in .env. macOS allows port 80 without sudo only on all network interfaces, so myOrb is then also reachable from your local network, protected by the login. Addresses ending in .localhost point to your own computer in macOS and modern browsers, so no hosts entry is needed. Passkeys only work at the address where they were added, so always use the same one.

Google accepts sign-in redirects only on localhost or over HTTPS, so connect Google while myOrb is open at http://localhost (see Integrations → Google).

Run with Docker

The image is ghcr.io/eriktelepovsky/myorb, built for amd64 and arm64 and published with every release.

Docker Compose

curl -O https://raw.githubusercontent.com/eriktelepovsky/myorb/main/compose.yaml
echo "MYORB_TIMEZONE=Europe/Bratislava" > .env
docker compose up -d
docker logs myorb

The log contains a setup link (/setup?token=…). Open it at http://your-server:8000 and choose a password. Requests reach the container from the Docker network, so setup always needs this link. Data is stored in the myorb-data volume.

Plain Docker

docker run -d --name myorb --restart unless-stopped \
  -p 8000:8000 -v myorb-data:/data \
  -e MYORB_TIMEZONE=Europe/Bratislava \
  ghcr.io/eriktelepovsky/myorb:latest
docker logs myorb

Build the image yourself

Until the first release is published, or to run your own changes, build the image from the source and use it with the commands above:

docker build -t ghcr.io/eriktelepovsky/myorb:latest .
docker compose up -d

Run in production

In production, myOrb runs behind a reverse proxy that provides HTTPS on your domain. HTTPS is required for passkeys, for connecting Google and for installing myOrb as an app on a phone.

This example uses Caddy, which gets a certificate from Let's Encrypt automatically. Point your domain's DNS record to the server, then put these two files in one directory:

compose.yaml:

services:
  myorb:
    image: ghcr.io/eriktelepovsky/myorb:latest
    container_name: myorb
    restart: unless-stopped
    volumes:
      - myorb-data:/data
    environment:
      MYORB_TIMEZONE: Europe/Bratislava
      MYORB_PUBLIC_URL: https://myorb.example.com
      # Caddy reaches myOrb from the Docker network (in 172.16.0.0/12 by default);
      # trust its X-Forwarded-* headers.
      MYORB_TRUSTED_PROXIES: 172.16.0.0/12
      MYORB_SECRET_KEY: ${MYORB_SECRET_KEY}

  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy-data:/data

volumes:
  myorb-data:
  caddy-data:

Caddyfile:

myorb.example.com {
    reverse_proxy myorb:8000
}

Generate the encryption key once and keep it safe, e.g. in a password manager:

echo "MYORB_SECRET_KEY=$(openssl rand -hex 32)" > .env
docker compose up -d
docker logs myorb

Open the setup link from the log at https://myorb.example.com/setup?token=…. myOrb is not exposed directly: only Caddy publishes ports.

Then, in myOrb:

  • Google: in your OAuth client in Google Cloud Console, add the redirect URI https://myorb.example.com/integrations/google/callback. You can keep using the same client as for local development.
  • Claude: add your Anthropic API key in Integrations → Claude.

Settings

Variable Default Meaning
MYORB_TIMEZONE system time zone Your time zone, e.g. Europe/Bratislava. Containers run in UTC, so set it.
MYORB_PUBLIC_URL address of each request Public HTTPS address. Used for passkeys, the CSRF check, Secure cookies and the Google redirect URI.
MYORB_TRUSTED_PROXIES 127.0.0.1 IP addresses or networks of the reverse proxy whose X-Forwarded-For and X-Forwarded-Proto headers are trusted, or *.
MYORB_SECRET_KEY generated in the data directory Key that encrypts connected accounts and API keys. Keep it outside the data volume and do not lose it: changing it means connecting all accounts again.
MYORB_DATA_DIR data (/data in Docker) Where the database and the generated key are stored.
MYORB_PLUGINS none Custom plugins to install at startup, as for pip: myorb-wallet==1.2, a wheel URL or a mounted directory. See writing plugins.
MYORB_HOST, MYORB_PORT 127.0.0.1, 8000 (0.0.0.0 in Docker) Interface and port to listen on.

Updates and backups

Update to the latest release:

docker compose pull
docker compose up -d

Database migrations run automatically at startup.

Back up the database while myOrb runs (SQLite's backup keeps it consistent), then copy it out of the container:

docker exec myorb python -c "import sqlite3; sqlite3.connect('/data/myorb.db').backup(sqlite3.connect('/data/backup.db'))"
docker cp myorb:/data/backup.db ./myorb-backup.db

Without MYORB_SECRET_KEY, also back up /data/secret.key; the connected accounts in the backup cannot be read without it.

Development

uv sync
uv run myorb serve --reload   # restarts on code changes
uv run pytest
uv run ruff check . && uv run ruff format --check .

See the architecture for how myOrb is built, and writing plugins to connect your own services.

Roadmap

See the roadmap for planned features and their order.

Contributing

Contributions are welcome! Before your first pull request can be merged, you need to sign the Contributor License Agreement. The CLA bot will guide you through it with a single comment in your pull request.

License

Copyright © 2026 Erik Telepovský

myOrb is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). If you run a modified version of myOrb as a network service, you must make its source code available to its users.

For commercial licensing that is not subject to the AGPL terms, please contact the author.

Metadata

Release files for myorb 0.1.11

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

Source distribution (sdist)

Source distribution for myorb 0.1.11
File Size Uploaded Provenance
myorb-0.1.11.tar.gz 667.7 kB With provenance Details

Built distribution (wheel)

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

Total release size: 1.2 MB

Release files / myorb-0.1.11.tar.gz

Download URL myorb-0.1.11.tar.gz
Size 667.7 kB
Tags Source
SHA-256 checksum
How to use checksums
cc177e5c644407c4d3b71cd8042ca4427e5e5e238d0e27e05aedbc836bf10f80
BLAKE2b-256 checksum
How to use checksums
f8d6af47875ded985723120c41bd5dfd4799cd8fdff019258d0932a009149222
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 23, 2026.

Transparency log

Release files / myorb-0.1.11-py3-none-any.whl

Download URL myorb-0.1.11-py3-none-any.whl
Size 578.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cc2bec6ecb396c0cff90b081fc29d029b2640b6cbcb0e0bbd2185c4884b9cab4
BLAKE2b-256 checksum
How to use checksums
67c79948ed62d5e5b6672b44a1c0faa3ffa2a8c09f2b28f18ac4932ea7923923
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 23, 2026.

Transparency log

Security for myorb 0.1.11

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 myorb-0.1.11.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 Oct 23, 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.11 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