Getting started
There are two audiences. Pick yours.
I want to set my own avatar
Until you save anything, you already have a deterministic generated avatar automatically — nothing to set up. To customise it, at console.portrait.intrasys.ai:
- Sign in with your work email — headless WorkOS magic auth, the same pattern as Presto and Panes. A clicked magic link both verifies the address and logs you in.
- Pick how to make your avatar on the Avatar page:
- Design — the option editor (hair, skin, clothing, accessories, background, …) with live preview.
- Upload — a photo, cropped to square.
- ✨ Ask AI — drop a photo, hit Generate, and an on-infrastructure vision model suggests a designed avatar; it seeds the Design editor so you tweak before saving. Assisted, not exact — a starting point. Your photo is never stored.
- Save. That image now serves everywhere, replacing the generated default within ~5 minutes.
- (Optional) Claim a second address (work + personal) under Emails. Every verified claim resolves to the same avatar, so one face follows you across every address you use.
You never touch a consuming app to do this — Portrait owns the account, apps stay ignorant of it. That's the Gravatar model.
I want to adopt Portrait in my app
This works today — the read path is live and needs no account, no key, no coordination. The whole integration:
const hash = sha256(email.trim().toLowerCase()) // your app already has the email
<img src={`https://media.portrait.intrasys.ai/${hash}?s=64`} alt="" />
Drop it into your existing avatar chip and keep initials as the onError fallback. Nothing else —
no SDK, no secret, no avatar_version column, no API call. See App integration
for fallbacks, sizing, and caching.