Jarvis, domácí server, e-shop, CI pipeline, počet objednávek, teplota v sauně. Když to umí vrátit malý JSON přes HTTPS, AURA to zobrazí jako krásný widget na iPhonu — a část i v CarPlay.
{
"title": "Jarvis", // titulek widgetu
"value": "37 úkolů", // HLAVNÍ hodnota (string, číslo i bool)
"subtitle": "3 hotové dnes", // řádek pod hodnotou
"symbol": "brain.head.profile", // SF Symbol (developer.apple.com/sf-symbols)
"progress": 0.62 // 0–1 → prstenec/průběh
}
| Pole | Typ | Popis |
|---|---|---|
valuePOVINNÉ | string · number · bool | Hlavní zobrazená hodnota. Čísla se formátují automaticky, bool jako ✓/✕. |
titlevolitelné | string | Titulek. Když chybí, použije se titulek nastavený v aplikaci. |
subtitlevolitelné | string | Doplňkový řádek (detail, čas, kontext). |
symbolvolitelné | string | Jméno SF Symbolu pro slot Ikona (např. bolt.fill, server.rack). |
progressvolitelné | number 0–1 | Vyplní slot Průběh (prstenec). |
Neznámá pole se ignorují — můžeš si do odpovědi klidně přidat vlastní. Odpověď max 64 kB, timeout 8 s.
https:// — http odmítáme (chrání tvoje data na cestě).Authorization: Bearer …. Nikam jinam se neodesílá.GET tvého endpointu.# kamkoliv, kde máš HTTPS hosting (Cloudflare Pages, GitHub Pages…)
echo '{"title":"Test","value":"Funguje!","symbol":"checkmark.seal.fill"}' > aura.json
# 1) endpoint — jeden soubor server.py:
from http.server import BaseHTTPRequestHandler, HTTPServer
import json
class H(BaseHTTPRequestHandler):
def do_GET(self):
data = {"title": "Jarvis",
"value": "37 úkolů",
"subtitle": "3 hotové dnes",
"symbol": "brain.head.profile",
"progress": 0.62}
body = json.dumps(data).encode()
self.send_response(200)
self.send_header("Content-Type", "application/json")
self.end_headers()
self.wfile.write(body)
HTTPServer(("127.0.0.1", 8477), H).serve_forever()
# 2) HTTPS zadarmo přes Tailscale (doma i na cestách):
tailscale serve --bg 8477
# → https://tvuj-mac.tailnet-xxxx.ts.net → vlož do AURA
Tip pro Jarvis: nech Jarvise při každém cyklu zapisovat aura.json (počet úkolů, poslední akce, nálada systému…) a servíruj ho přes tailscale serve. Widget se stane živým oknem do tvého druhého mozku.
Prompt: „Napiš mi endpoint (Node/Python/Workers), který vrací JSON
{title, value, subtitle, symbol, progress} podle formátu
aura-widgets.pages.dev/docs a nasaď ho na Cloudflare Workers."
export default {
async fetch() {
// sem dosaď vlastní logiku (DB, API, počítadlo…)
const orders = 12;
return Response.json({
title: "E-shop",
value: `${orders} objednávek`,
subtitle: "dnes",
symbol: "cart.fill",
progress: Math.min(orders / 20, 1)
});
}
}
curl -s https://tvuj-endpoint/aura.json | python3 -m json.tool
V aplikaci pak Designer → widget AURA Link → „Načíst a otestovat" — uvidíš živou hodnotu rovnou v náhledu.
Formát je stabilní (v1). Nová pole budou vždy jen volitelná — existující endpointy se nikdy nerozbijí.