Documentation

Changelog

Hiras is currently at version 1.0.0, its first release, and is in pre-release — it hasn’t been published to Google Play yet. From the public release onward, every version’s changes are recorded here. Breaking changes only ever come with a new version, never slipped into an existing one.

1.0.0 — first release

The inaugural release. Everything Hiras does today ships in this version:

The gateway

  • LAN-only HTTP server on the phone, on a fixed port (8080).
  • REST API: POST /api/sms/send, GET /api/messages, GET /api/messages/:id, GET /api/stats, GET /api/host/info, GET /api/diagnostics, and an unauthenticated GET /health.
  • Automatic splitting of long messages into SMS segments.
  • Multi-SIM support — a default SIM plus an optional per-request simSlot.

Security

  • sk_local_ API key in Android Keystore-backed storage, sent as a bearer token, compared in constant time.
  • Local-network guard that rejects any non-private address before authentication.
  • Fixed rate limits (60 segments/min, 1 req/sec) plus a per-caller burst guard, and a 16 KB request cap.

Two-way and testing

  • Inbound SMS forwarded as HMAC-signed webhooks, with retries and no stored inbox.
  • Dry Run and Failure Simulation — exercise the API without sending a real text or spending load.

On-device truth

  • SQLite send history (newest 1,000) recording real sent / failed outcomes, plus durable today/month stats. Nothing is uploaded.
  • Live diagnostics and a one-tap JSON export of the event log — outcomes and timestamps, never message bodies.

Reliability and setup

  • Foreground service that survives screen-off and swipe-away, with an optional start-after-reboot.
  • First-run onboarding, QR/copy pairing, and copy-paste client examples for cURL, C#, Node.js, and Flutter.
  • Detect-and-list VPN access for a private network you already run.

Next