Focale is a small desktop/CLI bootstrap for Focale users that:
- logs in with the user's Arcsecond account
- creates and stores a local Hub agent identity
- enrolls that identity with Arcsecond when needed
- mints a short-lived Hub JWT
- connects to the Arcsecond Hub using the signed Ed25519 challenge flow
Focale owns its own local state and uses Arcsecond password login to obtain a short-lived bearer JWT plus a refresh token.
pip install focaleThen:
focale login
focale context list
focale context use personal
focale connect --hub-url wss://hub.arcsecond.io/ws/agentpython -m focale launches the PySide6 desktop app when no CLI arguments are given.
The existing focale console script remains available for terminal-driven workflows.
This repository includes a bootstrap for building a Windows installer from CI. The installer packages
the PySide6 desktop app as focale.exe.
See:
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.arcsecond.io/ws/agent
focale doctor --hub-url wss://hub.arcsecond.io/ws/agent --json
focale connect --hub-url wss://hub.arcsecond.io/ws/agent
focale --api-server https://api.arcsecond.dev connect --hub-url wss://hub.arcsecond.dev/ws/agent --once
focale connect --organisation my-observatory --hub-url wss://hub.arcsecond.io/ws/agent
focale platesolver status
focale platesolver solve --peaks-file ./peaks.jsonfocale connect will automatically:
- refresh the Arcsecond access JWT when needed
- create a local Ed25519 keypair if needed
- enroll a personal or organisation-scoped agent installation if needed
- mint a Hub JWT
- discover local ASCOM Remote (Alpaca) servers and register new ones in the selected context
- 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-observatoryPlate solving is included with pip install focale — arcsecond-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 6You 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.jsonpython -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
pytest -qThis 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