Skip to main content

Focale desktop and Hub bootstrap client

Project description

Focale

Focale is a small desktop/CLI bootstrap for Focale users that:

  • logs in with the user's Focale account
  • creates and stores a local Hub agent identity
  • enrolls that identity with Focale when needed
  • mints a short-lived Hub JWT
  • connects to the Focale Hub using the signed Ed25519 challenge flow

Focale owns its own local state and uses Focale password login to obtain a short-lived bearer JWT plus a refresh token.

User install

Python / terminal

pip install focale-local-relay

Then:

focale login
focale context list
focale context use personal
focale connect --hub-url wss://hub.focale.space/ws/agent

Desktop GUI

python -m focale_local_relay launches the PySide6 desktop app when no CLI arguments are given. The existing focale console script remains available for terminal-driven workflows.

Windows installer

This repository includes a bootstrap for building a Windows installer from CI. The installer packages the PySide6 desktop app as focale.exe.

See:

Commands

focale login
focale status
focale context show
focale context list
focale context use personal
focale context use my-observatory
focale doctor --hub-url wss://hub.focale.space/ws/agent
focale doctor --hub-url wss://hub.focale.space/ws/agent --json
focale connect --hub-url wss://hub.focale.space/ws/agent
focale --api-server https://api.focale.dev connect --hub-url wss://hub.focale.dev/ws/agent --once
focale connect --organisation my-observatory --hub-url wss://hub.focale.space/ws/agent
focale platesolver status
focale platesolver solve --peaks-file ./peaks.json

focale connect will automatically:

  1. refresh the Focale access JWT when needed
  2. create a local Ed25519 keypair if needed
  3. enroll a personal or organisation-scoped agent installation if needed
  4. mint a Hub JWT
  5. discover local ASCOM Remote (Alpaca) servers and register new ones in the selected context
  6. complete the Hub challenge-response handshake

You can set the default context once and keep connect/doctor simple:

focale context use personal
# or
focale context use my-observatory

Plate solving

Plate solving is included with pip install focale-local-relayarcsecond-astrometry is a mandatory dependency and ships native binaries for Windows, macOS, and Linux with no Docker or external tooling required.

focale platesolver status
focale platesolver solve --peaks-file ./peaks.json --scales 6

You can also target a remote service:

focale platesolver status --service-url http://127.0.0.1:8900
focale platesolver solve --service-url http://127.0.0.1:8900 --peaks-file ./peaks.json

Development

python -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
pytest -q

Publishing

This repo includes:

  • a PEP 621 pyproject.toml
  • a CI workflow for tests
  • a PyPI publish workflow on tags such as v0.2.0
  • a Windows installer workflow that builds a PyInstaller bundle and wraps it with Inno Setup

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

focale_local_relay-0.4.0.tar.gz (267.4 kB view details)

Uploaded Source

Built Distribution

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

focale_local_relay-0.4.0-py3-none-any.whl (224.9 kB view details)

Uploaded Python 3

File details

Details for the file focale_local_relay-0.4.0.tar.gz.

File metadata

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

File hashes

Hashes for focale_local_relay-0.4.0.tar.gz
Algorithm Hash digest
SHA256 a53c7e011f2785cc9d03eb8da8a5282192dab368eaa3168fa527fba56f85492f
MD5 c8e539548b5df9ad4c40d5f6aafc9b19
BLAKE2b-256 ac4bd8c68d8fcef63431972703bce1b03a70dd5dc01763d320a17a32efd9a7b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for focale_local_relay-0.4.0.tar.gz:

Publisher: publish.yml on arcsecond-io/focale-local-relay

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

File details

Details for the file focale_local_relay-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for focale_local_relay-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 910ea8c3a0250f9124c48b0363308176a81d6fc1a099517c0b91485239fc7e71
MD5 5656cf763cc8b9f7df3cb9e701e31e36
BLAKE2b-256 0f4d58e78948e88c5658fabeda9355e7246e68f11aad17cfebd506f1f554a0fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for focale_local_relay-0.4.0-py3-none-any.whl:

Publisher: publish.yml on arcsecond-io/focale-local-relay

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