Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,6 @@ jobs:
GITHUB_TOKEN: ${{ github.token }}
run: python scripts/collect_servers.py

# The specification, word for word, at its latest vX.Y.Z tag (spec.lock: latest; scripts/fetch_spec.py).
- name: Import the specification
env:
GITHUB_TOKEN: ${{ github.token }}
run: python scripts/fetch_spec.py

- name: Build (strict)
run: mkdocs build --strict

Expand Down
1 change: 0 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ install: ## Install Python dependencies

data: ## Collect every server's released version and tools
$(PYTHON) scripts/collect_servers.py
$(PYTHON) scripts/fetch_spec.py

build: ## Build the static site into site/
$(MKDOCS) build
Expand Down
12 changes: 5 additions & 7 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,17 @@ QSO Graph is open amateur radio software for your station: logging, nets, awards

| Product | What it is | Status |
|:--------|:-----------|:-------|
| **QSO Graph Logger** (QGLogger) | A contest-style logger for nets. Lean, fast and secure: it runs the net, and hands your contacts to the logger you already use | In development |
| **[QSO Graph SDK](https://github.com/qso-graph/qso-graph-sdk)** (QGSDK) | The build kit for QGLogger: one command to a pinned build environment on Windows or Linux | Available |
| **qso-graph-adif** | The ADIF specification as a service: fields, enumerations and data types by version, validation and lookups, through an API and a web interface | Planned |
| **qso-graph-core** | Club services for clubs that have none of their own: members, awards, net history | Planned |
| **qso-graph-atlas** | HF propagation data and analysis | Planned |
| **MCP servers** | Connect AI assistants to logbooks, public services, ADIF and propagation data | Available |
| **QSO Graph Desktop** | One app for your station on Windows, macOS and Linux: your logbook, nets, awards, spots and your radio, with your callsigns and logins kept in your own OS keyring | In design |
| **[QSO Graph SDK](https://github.com/qso-graph/qso-graph-sdk)** (QGSDK) | The build kit for QSO Graph's standalone apps: Qt and CMake, one command to a pinned build environment on Windows or Linux | Available |

More on each in [Products](products.md).

## How it fits together

**[ADIF](https://adif.org/) is the base.** Every QSO Graph tool reads and writes ADIF, the format the whole hobby already shares, and uses ADIF's own definition for every field ADIF defines. **No one-off custom fields:** when a tool genuinely needs something ADIF doesn't have, it is defined **once**, published, and used the same way across every QSO Graph tool where it applies. That costs more than a quick private field, and it's a cost accepted deliberately: it's what keeps the tools working together, and what lets you take your log anywhere.

Every tool stands alone, and the pieces talk through published interfaces and shared reference data, not shared code. The rules behind that are in the [QSO Graph specification](spec/index.md).
Every tool stands alone, and the pieces talk through published interfaces and shared reference data, not shared code. The rules behind that are in the [QSO Graph specification](specification.md), being rewritten for QSO Graph Desktop.

---

Expand Down Expand Up @@ -69,7 +67,7 @@ Dashboard, physics lab, DXCC progress, path analyzer, and log viewer, all powere
## Project Links

- **GitHub**: [github.com/qso-graph](https://github.com/qso-graph)
- **Specification**: [QSO-GRAPH-SPEC](spec/index.md) ([source](https://github.com/qso-graph/qso-graph-spec))
- **Specification**: [being rewritten](specification.md) for QSO Graph Desktop
- **Demo**: [qso-graph-demo.vercel.app](https://qso-graph-demo.vercel.app/)
- **Testing**: [108/108 PASS](testing.md): security audit, ADIF 3.1.7 official test corpus, forensic validation
- **Related**: [IONIS-AI](https://ionis-ai.com/): HF propagation prediction from 14B amateur radio observations
3 changes: 1 addition & 2 deletions docs/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
## Documentation

- [Products](https://qso-graph.io/products/): every QSO Graph product, what it is, and its status.
- [Specification](https://qso-graph.io/spec/): QSO-GRAPH-SPEC as published: the vision, the eight pillars (each with a mechanical test), the contracts, governance.
- [Specification](https://qso-graph.io/specification/): being rewritten for QSO Graph Desktop; published again when ready.
- [Getting Started](https://qso-graph.io/getting-started/): Installation with uv (servers run with uvx), credential setup, MCP client configuration for Claude Desktop, Claude Code, ChatGPT, Cursor, VS Code, and Gemini CLI.
- [Architecture](https://qso-graph.io/architecture/): System design — foundation layer, credential flow, rate limiting, read-only security model.
- [Testing & Validation](https://qso-graph.io/testing/): four test layers per server, ADIF 3.1.7 official test corpus validation, forensic tests from real operator data.
Expand All @@ -59,5 +59,4 @@
- GitHub: https://github.com/qso-graph
- Documentation: https://qso-graph.io
- Demo: https://qso-graph-demo.vercel.app
- Specification: https://github.com/qso-graph/qso-graph-spec/tree/v1.0.1
- Related: https://ionis-ai.com (HF propagation prediction from 14B amateur radio observations)
33 changes: 16 additions & 17 deletions docs/products.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,16 @@ render_macros: true

# Products

QSO Graph is several products, not one program. Each stands alone: use the one that applies to you and ignore the rest. They follow the same [specification](spec/index.md), so moving between them is easy.
QSO Graph is several products, not one program. Each stands alone: use the one that applies to you and ignore the rest. They follow the same [specification](specification.md), so moving between them is easy.

| Product | Kind | Status |
|:--------|:-----|:-------|
| [MCP servers](#mcp-servers) | Python packages for AI assistants | Available |
| [QSO Graph Desktop](#qso-graph-desktop) | Desktop app (Windows, macOS, Linux) | In design |
| [QSO Graph SDK](#qso-graph-sdk) | Build kit | Available |

--------|:-----|:-------|
| [MCP servers](#mcp-servers) | Python packages for AI assistants | Available |
| [QSO Graph Logger](#qso-graph-logger) | Desktop app (Windows, Linux) | In development |
| [QSO Graph SDK](#qso-graph-sdk) | Build kit | Available |
| [qso-graph-adif](#qso-graph-adif) | Service: API and web interface | Planned |
Expand All @@ -23,26 +28,20 @@ QSO Graph is several products, not one program. Each stands alone: use the one t

[The servers](servers/index.md) · [Getting Started](getting-started.md) · [Security](security.md)

## QSO Graph Logger
## QSO Graph Desktop

**QGLogger is a contest-style logger for nets.** It does one job: running and following a net, quickly and reliably. It isn't another general-purpose logger; there are already many good ones. Your contacts go to the logger you already use, by ADIF, and to LoTW, eQSL and QRZ. It's lean (a native desktop app) and secure. The rule it is built around: nothing interrupts an operator running a net. Updates never install during a net, a new version reads the old log, and the check-in grid doesn't stall.
**One app for your station**, on Windows, macOS and Linux: your logbook, the nets you join or run, where
you stand on awards and what you still need, spots, and your radio, in one place. Your callsigns and
logins are kept in your own operating system's keyring, never in a file and never on our servers. It
follows ADIF, so your log goes anywhere. Built to enterprise security standards and tested accordingly.

Every update is signed by more than one person, and the app checks those signatures before it installs it. It follows ADIF, so an operator can take their log to any other logger.
It is in design. Earlier plans for a separate net logger, an ADIF service and a self-hosted club server
are folded into it.

## QSO Graph SDK

**QGSDK** is the build kit for QGLogger: one command sets up a pinned build environment (Qt, compilers, packaging tools) on Windows or Linux. The build itself is plain CMake, so the SDK is a convenience, never a requirement.
**QGSDK** is the build kit for QSO Graph's standalone apps: one command sets up a pinned build
environment (Qt, compilers, packaging tools) on Windows or Linux. The build itself is plain CMake, so the
SDK is a convenience, never a requirement.

[GitHub](https://github.com/qso-graph/qso-graph-sdk)

## qso-graph-adif

The [ADIF specification](https://adif.org/) as a service: its fields, enumerations and data types by version, with validation and lookups, through an API and a web interface. It brings together the ADIF engine behind [adif-mcp](servers/adif-mcp.md) and ADIF's published reference data, so every QSO Graph product reads ADIF from one place.

## qso-graph-core

Club services for clubs that have none of their own: members, awards and net history, with an API. Built to run on a club's own server.

## qso-graph-atlas

HF propagation data and analysis, as a service other products can use, built on the [IONIS-AI](https://ionis-ai.com/) datasets.
3 changes: 1 addition & 2 deletions docs/servers/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ render_macros: true

# MCP Servers

QSO Graph provides {{ server_count() }} MCP servers ({{ tool_total() }} tools), plus the qso-graph-auth credential foundation, the qsp-client relay and the llm-stack, covering amateur radio logging, confirmations, propagation services, and local LLM integration. Start with [Getting Started](../getting-started.md).
QSO Graph provides {{ server_count() }} MCP servers ({{ tool_total() }} tools), plus the qso-graph-auth credential foundation and the qsp-client relay, covering amateur radio logging, confirmations, propagation services, and local LLM integration. Start with [Getting Started](../getting-started.md).

## How it works

Expand Down Expand Up @@ -78,7 +78,6 @@ You: "You have 3 new confirmations: JA1ABC on 20m FT8, ..."
| Package | Purpose | Auth Pattern |
|---------|---------|-------------|
| [qsp-client](qsp-client.md) | QSP — relay MCP tools to any local LLM endpoint | None (local) |
| [llm-stack](llm-stack.md) | Docker Compose — Open WebUI + llama.cpp + MCP tools in a browser | None (local) |

---

Expand Down
Loading
Loading