Open Source — Apache 2.0

Portable identity for
the open web

TIP is a protocol, not a platform. Your identity and reputation travel with you — and no single company can take them away.

Why TIP exists

Platform lock-in vs. an open identity layer

The Problem

  • Your identity is locked inside each platform
  • Reputation doesn’t transfer between sites
  • Platforms own and monetize your data
  • Vendor lock-in makes switching painful

With TIP

  • You own your identity — export it anytime
  • Reputation travels with you, site to site
  • Privacy by design — you control what’s shared
  • Open standard — no vendor lock-in

Protocol features

Everything an open identity standard needs

Portable IdentityOne identity that works across every TIP-enabled site. No new accounts.
Transparent ReputationOpen algorithm. Published formula. No black boxes.
Privacy LayerSession hashing, consent management, cross-site visibility controls.
Open StandardApache 2.0 licensed. Anyone can implement. Open governance.
Reference SDKsTypeScript, Python, and Go implementations included in the repo.
Conformance SuiteTest suite to verify any implementation matches the spec.

How TIP works

Sign in once. Carry trust everywhere.

01

Sign In

User signs in to any TIP-enabled site using their TIP identity.

02

Verify

Site verifies the identity document’s cryptographic signature.

03

Reputation

Reputation score and level are available. Transparent, auditable.

04

Interact

User comments, reacts, builds reputation that travels to the next site.

For Developers

Reference SDKs for TypeScript, Python, and Go live under tip/reference-impl/sdk/. Same protocol surface — resolve identity, read reputation, update privacy.

Install
npm install @threadline/tip-sdk
# or from the monorepo:
# cd tip/reference-impl/sdk/javascript && npm install && npm run build
Resolve identity · reputation · privacyTypeScript
import { createTIPClient } from '@threadline/tip-sdk';

const tip = createTIPClient('https://tip.example.com', 'site_abc');

const identity = await tip.resolveIdentity('tip_user_123');
if (!identity) throw new Error('Identity not found');

console.log(identity.profile.display_name);
console.log(identity.reputation.level); // new | established | trusted | …

const rep = await tip.getReputation('tip_user_123');
// { score, level, last_computed, … }

await tip.setPrivacy('tip_user_123', {
  cross_site_visible: false,
  history_public: true,
}, accessToken);

Build on the open web

Use Threadline Comments for the managed experience, or implement TIP yourself. Either way, you’re building on open standards.