Skip to content

LoremLabs/kudos

image

Kudos

Kudos is a reference implementation of an attribution-based allocation system.

It enables people to record who helped them — across the web, in software, in collaboration — and later allocate a fixed budget proportionally to those attributions.

Kudos is not a token.

Kudos is not a cryptocurrency.

Kudos is not a payment network.

Kudos is an allocation engine that makes generosity automatic.

It separates:

  • Signal (who helped you)
  • Allocation (how much weight they receive)
  • Settlement (how money is distributed)

The Key Insight

Attribution is free.

Allocation is computed later.

Money follows patterns, not clicks.

said another way:

Creative work should not require a price tag at every interaction.

Value is measured over time.

Settlement is a proportional reflection of recorded contribution.


The Model

At its core, Kudos is:

  1. Fix a budget for a class of value For example: You may budget $100/month for open source.

  2. Record attribution events
    Users or their software generate kudos for identifiers (email, username, DID, etc.).

  3. Allocate a budget proportionally
    At the end of a cycle (e.g., monthly / lunation), a fixed budget is split across all recorded attributions based on weight.

Formula:

recipient_share = budget × (recipient_weight ÷ total_weight)

Attribution precedes money. Settlement is a function of recorded attribution.


High-level system:

  • Clients emit attribution signals
  • Server records and indexes kudos
  • Cycles compute proportional allocations
  • Settlement layer applies compliance rules
  • Funds are optionally distributed via supported rails

Architecture

Signal Layer

Clients emit append-only kudos events.

Allocation Layer

Cycles aggregate events and compute proportional distributions deterministically.

Settlement Layer

Identifiers resolve to verified subjects. Compliance and eligibility rules are enforced before payout.


Repo Structure

packages/
  pool-core/        Pure logic: schemas, validation, normalization, errors
  ports/            Interface contracts: StoragePort, AuthPort, SinkPort, etc.
  server/           Fastify HTTP server + plugin for /core/v1/* routes
  storage-sqlite/   SQLite storage adapter (reference)
  storage-postgres/ PostgreSQL storage adapter (production)
  worker-outbox/    Outbox polling worker + ConsoleSink
  logging/          Structured logger
  subject-hash/     Deterministic subject hashing
apps/
  basic-pool-server/  Reference app: SQLite + outbox + static-token auth
test/               Integration / end-to-end tests
docs/               Architecture notes & legacy READMEs

Packages

Package Description
@kudos-protocol/pool-core Pure logic: schemas, validation, normalization, errors
@kudos-protocol/ports Interface contracts: StoragePort, AuthPort, SinkPort, etc.
@kudos-protocol/server Fastify HTTP server + plugin for /core/v1/* routes
@kudos-protocol/storage-sqlite SQLite storage adapter (reference)
@kudos-protocol/storage-postgres PostgreSQL storage adapter (production)
@kudos-protocol/worker-outbox Outbox polling worker + ConsoleSink
@kudos-protocol/logging Structured logger
@kudos-protocol/subject-hash Deterministic subject hashing

Identity & Subjects

Kudos uses a light-weight canonical identity abstraction called a Subject.

A Subject is:

type + opaque identifier

Example:

email:[email protected]

Other examples:

github:octocat domain:example.com
subject:3f9a8c2e... pool:https://pool.server...

At the signal layer, any valid subject can receive kudos.

At settlement time:

  • Subjects resolve to verified canonical entities.
  • Routing changes apply only to future cycles.
  • Compliance and eligibility checks occur before payout.

This separation allows attribution to remain flexible while settlement remains deterministic and compliant.


Usage

In a Moon is built using kudos.

License

MIT License. See LICENSE.

About

Kudos: the protocol powering the Web's attribution economy

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors