Skip to main content

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:

  1. 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.
  2. 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.
  3. Save. That image now serves everywhere, replacing the generated default within ~5 minutes.
  4. (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.