Skip to main content

BOSS Object Starter Service (BOSS)

BOSS is a service that instantiates Python objects as HEROs based on a JSON configuration. The configuration can be read from a file, a URL (e.g. from a CouchDB), or from an environment variable. Essentially, BOSS allows you to quickly wrap your arbitrary Python object as a HERO and to run it.

:open_book: Below is a quick walkthrough of the basic functionalities. You find the full documentation here.

As an example, let's take an object available in the Python standard library, the FTP class from the ftplib module. To make BOSS create an object of the class FTP, we need the following configuration:

{
     "_id": "test-json-ftp",
     "classname": "ftplib.FTP",
     "arguments": {
          "host": "ftp.us.debian.org"
     }
}
python -m boss.starter -u file:///absolute/path/to/ftp.json

Now our object is available in the default realm of our HEROS network. It can be viewed with any HEROObserver. For a graphical view, use HERO-Monitor.

Exposing the BOSS instance itself

To expose the BOSS instance as a HERO, use the --expose command line flag:

python -m boss.starter --expose -u file:///absolute/path/to/ftp.json

When the BOSS instance is exposed, HEROs can be dynamically added and removed by the calling the add_hero(config: dict) and remove_hero(name: str) methods. This allows to run BOSS without any initial configuration and manage the running HEROs from a remote service.

By default, the instance receives a unique name consisting of the hostname and a UUID. To change the name, use the --name argument:

python -m boss.starter --expose --name my_test_boss -u file:///absolute/path/to/ftp.json

Using the asyncio main loop

BOSS starts a asyncio loop that the started objects can use. If your object expects to get the loop object in the constructor you can define attach it to the boss loop through the magic string "@_boss_loop" as in the following example:

{
  "_id": "statemachine",
  "classname": "herostools.actor.statemachine.HERODatasourceStateMachine",
  "arguments": {
    "loop": "@_boss_loop",
    "http_port": 9090,
    "bind_address": "localhost",
    "labels": {"system": "heros"}
  }
}

Docker

A convenient way to deploy BOSS is inside of a Docker container. You can find pre-built containers images in our Docker registry.

You can also build the BOSS Docker image yourself from the Dockerfile in the repository:

docker build -t atomiq/boss .

A BOSS Docker service can be started with the following compose file

version: '2'

services:
  httpclient:
    image: registry.gitlab.com/atomiq-project/boss:latest
    restart: always
    network_mode: host
    environment:
     - |
       BOSS1=
       {
        "_id": "docker-env-ftp",
           "classname": "ftplib.FTP",
           "arguments": {
                "host": "ftp.us.debian.org"
           }
       }
    command: python -m boss.starter -e BOSS1

Additionally, also specifying a file or URL is possible, such that (mounted) JSON files in the Docker container or web URLs can be used as configuration sources. Note that the -e and -u options can be specified multiple times to define several objects that should be instantiated by the BOSS.

Download files

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

Source Distribution

heros_boss-0.6.21.tar.gz (38.1 kB view details)

Uploaded Source

Built Distribution

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

heros_boss-0.6.21-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file heros_boss-0.6.21.tar.gz.

File metadata

  • Download URL: heros_boss-0.6.21.tar.gz
  • Upload date:
  • Size: 38.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for heros_boss-0.6.21.tar.gz
Algorithm Hash digest
SHA256 e7155341bd916f6cc974dbd313fc9d8b6fb2d8e565f1d971e17248b92ea3fe61
MD5 9e2fbabdca588901cff78f8a071f320e
BLAKE2b-256 60d34fd24e5ea61909e9f6288cb85e3c031dae57d53307ff156d9e0c8ddfedea

See more details on using hashes here.

File details

Details for the file heros_boss-0.6.21-py3-none-any.whl.

File metadata

  • Download URL: heros_boss-0.6.21-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for heros_boss-0.6.21-py3-none-any.whl
Algorithm Hash digest
SHA256 2712764db52ef6adff488b26beba0e2793b40aad31c2fb3a809a7acc529aef5e
MD5 aebc4b1d8d651b922b374590816a984f
BLAKE2b-256 1a1add1fee118eeb374a660fc9bb539bebe7efa285d431ac2e37dd60bc6c73da

See more details on using hashes here.

Release history Release notifications | RSS feed

2026.0.1

2 files

0.6.23

2 files

0.6.22

2 files

This release

0.6.21 This release

2 files

0.6.20

2 files

0.6.19

2 files

0.6.18

2 files

0.6.17

2 files

0.6.16

2 files

0.6.15

2 files

0.6.14

2 files

0.6.13

2 files

0.6.12

2 files

0.6.11

2 files

0.6.10

2 files

0.6.9

2 files

0.6.8

2 files

0.6.7

2 files

0.6.6

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

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