Skip to main content

hannah-proto

Protobuf/gRPC schema definitions for the Hannah voice assistant ecosystem (Core, satellites, WebUI, ioBroker adapter, Telegram bot, and other consumers). This repo is the single source of truth for the wire protocol shared across all of them.

The .proto files live under hannah/, one per functional area — satellite control, event streaming, the ioBroker agent bridge, user registry, timers, automations, and so on. Nothing here is application code, just schema.

Distribution

Three independent, tag-triggered publish targets — pick whichever matches your language. Each contains only generated gRPC stubs/types for the current tagged release.

Language Package Install
Python PyPI hannah-proto pip install hannah-proto
TypeScript npm @m1kad0/hannah-proto npm install @m1kad0/hannah-proto
Go github.com/NurPech/hannah-proto-go go get github.com/NurPech/hannah-proto-go

Go has no separate package registry, so that tagged GitHub repo is the package — go get resolves it directly.

Versioning: PROTO_VERSION

Alongside the semver package/tag version, every release carries a single-integer PROTO_VERSION (see the PROTO_VERSION file). Hannah Core and its clients exchange this value on every call and reject a mismatch at runtime — that's the actual compatibility gate, not the semver tag. A breaking schema change requires bumping PROTO_VERSION; CI enforces this on every merge request via buf breaking.

Per-message compatibility: compat_version

PROTO_VERSION is repo-wide — any breaking change anywhere bumps it, forcing every consumer to reject, even ones that never call the affected RPC. compat_version (options.proto) is a finer-grained, independent counter set on an individual message:

message Foo {
  option (compat_version) = 2;
  ...
}

Bump a message's compat_version only when that specific message has an actual breaking change. A message with no compat_version option carries an implicit value of 1 — don't backfill the option onto messages that have never had a breaking change. This lets a consumer-side interceptor check only the messages a given RPC call actually uses instead of rejecting on any unrelated proto change.

Deprecating fields and RPCs

Don't remove a field or RPC the moment it's unused — that forces every consumer to bump immediately, even ones that never touched it (see the SetGroupRooms incident that forced 9 unrelated components to bump, hannah-proto#9). Instead:

  1. Mark it deprecated = true (protobuf's built-in field/method option) and note why + what replaces it in a comment.
  2. Leave it in place until the next planned major cleanup, not the next release.
  3. Actually remove it (a breaking change, PROTO_VERSION bump) only during that cleanup, batched with other accumulated deprecations rather than one at a time.

Go/TypeScript/Python codegen surface deprecated = true automatically (Go doc comment, TS @deprecated JSDoc) — no extra tooling or config needed.

Compatibility checks

CI runs buf lint and buf breaking (against origin/master) on every MR. To check a local branch against a specific released version:

buf breaking --against '.git#tag=vX.Y.Z'

Changelog

See CHANGELOG.md for what changed release to release, including breaking changes and the consumers they affect.

Download files

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

Source Distribution

hannah_proto-3.6.0.tar.gz (34.1 kB view details)

Uploaded Source

Built Distribution

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

hannah_proto-3.6.0-py3-none-any.whl (56.9 kB view details)

Uploaded Python 3

File details

Details for the file hannah_proto-3.6.0.tar.gz.

File metadata

  • Download URL: hannah_proto-3.6.0.tar.gz
  • Upload date:
  • Size: 34.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for hannah_proto-3.6.0.tar.gz
Algorithm Hash digest
SHA256 d33a4cf769006696ce5384e9c280d3bebfef9191a3164e95e65a3613c632aea9
MD5 3ef4c10b201ec4d940751f72f418c2e9
BLAKE2b-256 3aa2a9978ef6c770c52a1158bd6f3ec34e1b99991ffc520f477bd39d020c0fc2

See more details on using hashes here.

File details

Details for the file hannah_proto-3.6.0-py3-none-any.whl.

File metadata

  • Download URL: hannah_proto-3.6.0-py3-none-any.whl
  • Upload date:
  • Size: 56.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for hannah_proto-3.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bf8bcc35644ca43e86f3cabde34b44adb1d8958e89e9ccc2034322cb14412eb9
MD5 ff9e9cfcc139a873b2e0bf8fa230bea0
BLAKE2b-256 ebb4aeb7d14e1a96c8f8984eb2b09260ba92c77e59606be7b59c5eea432b9d53

See more details on using hashes here.

Release history Release notifications | RSS feed

3.10.0

2 files

3.9.0

2 files

3.8.0

2 files

3.7.2

2 files

3.7.1

2 files

3.7.0

2 files

3.6.1

2 files

This release

3.6.0 This release

2 files

3.5.0

2 files

3.4.0

2 files

3.3.1

2 files

3.3.0

2 files

3.2.0

2 files

3.1.0

2 files

3.0.0

2 files

2.1.0

2 files

2.0.1

2 files

2.0.0

2 files

1.1.0

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.5.6

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.9

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

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

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