Grantline
Identity from a signed grant, never a header.
Live · policy-checked grants · Updated 2026
Go · React · TypeScript · ed25519
Hosted on Render. The first open may take up to about 60 seconds; the proof below remains available immediately.
- Context
- Independent identity project · 2026
- My role
- Designer and sole engineer
- Team
- Solo build
- Evidence
- Signed five-minute grants · policy checks
POST /v1/sessions · grant past TTL
{
"error": "expired"
}
Passwords and spoofable tenant headers confuse authentication with authorization. Humans, machines, and agents need short-lived access that still fails closed.
Trust path
Failure
Wrong key or replayed challenge.
Invalid signature / already used. Challenges are 60s and single-use.
X-Tenant-Id: globex on an acme grant.
Echoed and ignored. /v1/me still returns acme.
Machine opens billing.api.
403. Kind and role fail the resource policy.
Grant past TTL.
Open session returns expired. Sessions expire lazily on list.
Inspect
What I would improve next
- Add signing-key rotation, grant revocation, and a durable policy and audit store.
- Replace the software proof adapter with real WebAuthn for people and KMS-backed keys for services.
- Model delegated authority explicitly so an agent can receive a narrower grant than its human sponsor.