{"id":41260684,"url":"https://github.com/wright-group/bluesky-in-a-box","last_synced_at":"2026-01-23T01:58:45.775Z","repository":{"id":38745244,"uuid":"330787647","full_name":"wright-group/bluesky-in-a-box","owner":"wright-group","description":"Bluesky services in docker containers, for use in Wright Group experimental orchestration.","archived":false,"fork":false,"pushed_at":"2026-01-21T16:08:55.000Z","size":108,"stargazers_count":4,"open_issues_count":11,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-22T03:32:06.710Z","etag":null,"topics":["bluesky","bluesky-queueserver","docker","docker-compose"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wright-group.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-01-18T21:09:58.000Z","updated_at":"2025-02-21T05:44:22.000Z","dependencies_parsed_at":"2024-03-25T23:32:15.256Z","dependency_job_id":"77a17d4b-f753-4e14-88fb-ecbc970320fa","html_url":"https://github.com/wright-group/bluesky-in-a-box","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/wright-group/bluesky-in-a-box","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wright-group%2Fbluesky-in-a-box","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wright-group%2Fbluesky-in-a-box/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wright-group%2Fbluesky-in-a-box/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wright-group%2Fbluesky-in-a-box/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wright-group","download_url":"https://codeload.github.com/wright-group/bluesky-in-a-box/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wright-group%2Fbluesky-in-a-box/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28677714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T01:00:35.747Z","status":"ssl_error","status_checked_at":"2026-01-23T01:00:19.529Z","response_time":144,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluesky","bluesky-queueserver","docker","docker-compose"],"created_at":"2026-01-23T01:58:45.007Z","updated_at":"2026-01-23T01:58:45.770Z","avatar_url":"https://github.com/wright-group.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bluesky-in-a-box \n\nBluesky services in docker containers, for use in Wright Group experimental orchestration.\n\n![architecture](./bluesky-in-a-box-architecture.svg)\n\n## ports\n\nThis application uses the following ports:\n\n| port  | protocol | content           |\n| :---- | :------- | :---------------- |\n| 27017 | mongo    | databroker        |\n| 6379  | redis    | re-manager redis  |\n| 5568  | zmq      | re-manager events |\n| 60615 | json/zmq | re-manager        |\n| 60625 | json/zmq | re-manager logs   |\n| 60620 | json/zmq | hwproxy           |\n\n## prepare\n\n```sh\n$ apt install docker.io\n$ apt install docker-compose\n```\n\n## start/rebuild\n\n```sh\n$ docker-compose up --build\n```\n\nGo to http://localhost:60610/docs to see queueserver api. Note: not active at this time.\n\n## Installing bluesky-in-a-box on Windows\n\n### Downloads\n\n- Docker desktop: docker.com/products/docker-desktop\n- bluesky-in-a-box: `git clone https://github.com/wright-group/bluesky-in-a-box`\n- bluesky-cmds: `git clone https://github.com/wright-group/bluesky-cmds` (option gui)\n\n### Install\n- conda install happi\n- conda install yaqc-bluesky\n- conda install bluesky-queueserver\n- conda install bluesky-hwproxy\n- conda install bluesky-widgets\n- conda install yaqc-qtpy\n- conda install sympy\n- run `wsl --install`\n- run installer for docker desktop\n- reboot machine, ensure virtualization is enabled. This is sometimes called KVM, or Intel Virtualization Technology. It is often off by default, but is needed for wsl2/docker\n- I personally like to do `wsl --install -d debian` but that is more of a preference than a requirement\n\n- Toggle settings for docker desktop:\n   - At least until this is the primary way of collecting data on a system, I prefer not to start at login/open dashboard at startup.\n   - I do not want to pop up with weekly tips or send usage stats\n   - I do enable docker compose V2\n   - Additionally under resources -\u003e wsl integration I enable for all distros I have installed\n\n- Install bluesky-cmds python program (eventually will be conda/pip install)\n   - conda install flit\n   - ensure dependencies of bluesky-cmds are installed\n   - flit install --deps none --pth-file\n   - run `bluesky-cmds edit-config` to populate the config file, default should be correct\n\n### Configure hardware\n\n- create a happi config file:\n  ```\n  mkdir %LOCALAPPDATA%\\happi\\happi\n  echo [DEFAULT] \u003e %LOCALAPPDATA%\\happi\\happi\\happi.ini\n  echo path = %LOCALAPPDATA%\\happi\\happi\\happidb.json \u003e\u003e %LOCALAPPDATA%\\happi\\happi\\happi.ini\n  setx /s %COMPUTERNAME% /u %USERNAME% HAPPI_CFG %LOCALAPPDATA%\\happi\\happi\\happi.ini\n  ```\n- create your happi db: \n  - `yaqd list --format happi |  happi update -`\n  - NOTE: every time you change the yaqd hardware, you must update happi using this line.\n\n### Configure folders\n\n- Create folder for data output\n  - Create `~/bluesky-cmds-data` (Wherever you want data to go, should match `WT5_DATA_PATH` below\n- Edit `.env` for bluesky-in-a-box\n  - `copy .env-example .env`\n  - edit `.env`\n     - set `HAPPI_DB_PATH=C:\\Users\\\u003cUSERNAME\u003e\\AppData\\Local\\happi\\happi\\happidb.json`\n     - set `WT5_DATA_PATH=C:\\Users\\\u003cUSERNAME\u003e\\bluesky-cmds-data`\n     - set `TZ=America/Chicago` (or whatever timezone you are in)\n\n### Start/Update Containers\n\n- Start your docker\n  - if needed, checkout/pull the appropriate branch which may have fixes for your system\n  - from bluesky-in-a-box root directory do `docker compose up --build`\n  - This will take a while the first time, but much is cached for future builds if things change\n  - Future updates will redo this step with the appropriate fixes in the local version\n  - Use `docker compose build --no-cache` to force a full rebuild (should be rare)\n\n### config databroker\n  - add catalog.yml to `databroker.catalog_search_path`\n  - By default: C:\\Users\\\u003cUSERNAME\u003e\\AppData\\Local\\intake\\intake\\catalog.yml\n\n```yaml\n# ~/.local/share/intake/catalog.yml\nsources:\n  mongo:\n    driver: bluesky-mongo-normalized-catalog\n    args:\n      metadatastore_db: mongodb://localhost:27017/metadatastore\n      asset_registry_db: mongodb://localhost:27017/asset_registry\n```\n\n  - This allows you to load data from the mongo server (in addition to the wt5 files)\n\n## Installing slack service (Optional) \n\n- If you do not want to use the slack app, comment out the service in `docker-compose.yml`.  If you want to use the slack app, continue with the following steps.\n- If the slack app has not yet been created, a workspace owner will need to create a new bot and configure permissions (see [api.slack.com/apps](https://api.slack.com/apps)).\n- You will need to designate a channel for the bot to post its feed to.  If needed, create the channel.  You will need to know the channel ID for the app configuration (see below).\n- Be sure to have the have the following configuration settings (which can be checked by viewing the app manifest):\n  ```\n  oauth_config:\n    scopes:\n      bot:\n        - app_mentions:read\n        - channels:history\n        - groups:history\n        - mpim:history\n        - im:history\n        - chat:write\n        - files:write\n        - im:write\n        - commands\n  settings:\n    event_subscriptions:\n      bot_events:\n        - app_mention\n        - message.channels\n        - message.groups\n        - message.im\n    interactivity:\n      is_enabled: true\n    socket_mode_enabled: true\n  ```\n- To enable socket mode, you will need to get an app token (`xapp-...`)\n- To use the bot, you will need to get a bot token (`xoxb-...`)\n- Add additional variables to the bluesky-in-a-box `.env`:\n  - `SLACK_BOT_TOKEN = xoxb-...`  \n    (enter the actual token)\n  - `SLACK_APP_TOKEN = xoxa-...`  \n    (enter the actual token)\n  - `SLACK_CHANNEL = C1234567890`  \n    (enter the _channel id_--NOT the channel name--to which you want the bot to publish scan updates)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwright-group%2Fbluesky-in-a-box","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwright-group%2Fbluesky-in-a-box","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwright-group%2Fbluesky-in-a-box/lists"}