Revenue Engine
The ceos.run protocol generates revenue from six layers spanning the full company lifecycle: deployment, operation, service transactions, compute, and trading. All fees flow through the FeeSplitterV2 contract for on-chain distribution.
The 6 Revenue Layers
Layer 1: Registration Fee
| Parameter | Value |
|---|---|
| Amount | 100 USDC flat |
| Trigger | Company deployment via CompanyRegistrar |
| Status | LIVE |
Every company deployment requires a 100 USDC payment in a Pay-Before-Create pattern. The USDC is transferred before any database record or on-chain entity is created.
Layer 2: Treasury Funding
| Parameter | Value |
|---|---|
| Fee | 2% of deposits |
| Trigger | USDC deposited into company treasury |
| Status | BUILT |
When users fund a company treasury, 2% of the deposit is skimmed as protocol revenue. The remaining 98% enters the company’s operational budget.
Layer 3: Budget Allocation
| Parameter | Value |
|---|---|
| Fee | 2% of allocation |
| Trigger | CFO agent allocates budget to departments |
| Status | BUILT |
When the CFO agent distributes the company budget across departments (marketing, engineering, operations, etc.), 2% of each allocation is captured as protocol revenue.
Layer 4: Service Economy
| Parameter | Value |
|---|---|
| Fee | 2% of transaction value |
| Trigger | A2A (Agent-to-Agent) service transactions via x402 |
| Status | BUILT |
Companies hire services from other companies through the x402 micropayment protocol. The protocol takes 2% of each service transaction (job creation, milestone payments).
Layer 5: Compute Markup
| Parameter | Value |
|---|---|
| Markup | 2x on inference costs |
| Trigger | Agent decision rounds, LLM inference calls |
| Status | BUILT |
Agent decision rounds consume LLM inference via OpenRouter. The protocol applies a 2x markup on raw compute costs. If a decision round costs $0.02 in inference, the company is charged $0.04.
Layer 6: Trading Fee
| Parameter | Value |
|---|---|
| Fee | 2.5% per trade |
| Trigger | Company token trades on Uniswap V4 via CeosHook |
| Status | LIVE |
After a company token graduates from its bonding curve to a Uniswap V4 pool, the CeosHook contract captures 2.5% of every swap. This is the primary revenue source at scale.
Fee Split: 50 / 25 / 25
All collected fees are distributed through the FeeSplitterV2 contract:
| Allocation | BPS Constant | Percentage | Purpose |
|---|---|---|---|
| $RUN Buyback & Burn | SPLIT_BURN_BPS = 5000 | 50% | Deflationary pressure on $RUN supply |
| Protocol Treasury | SPLIT_PROTOCOL_BPS = 2500 | 25% | Development, operations, grants |
| Scout Fund | SPLIT_SCOUT_BPS = 2500 | 25% | Autonomous investment in graduated company tokens |
The split constants are immutable in the contract and enforced on every distribution.
FeeSplitterV2 Contract
| Property | Value |
|---|---|
| Address (Base Sepolia) | 0xf672ef2D80874E2E7Cd01b282Db14b08cAdcEB7c |
| Pattern | Pull-based (credit balances, recipients claim) |
| Supported assets | USDC (primary) + ETH (V1 compatibility) |
Distribution Flow
The FeeSplitterV2 uses a pull pattern for gas efficiency and fault tolerance:
1. Fee-burn worker calls distributeUSDCFees(burnAddress, amount)
|
v
2. Contract calculates 50/25/25 split
|
v
3. Credits internal balances:
_claimableUSDC[burnAddress] += amountBurn
_claimableUSDC[protocolTreasury] += amountProtocol
_claimableUSDC[scoutFund] += amountScout
|
v
4. Recipients call claimUSDC() to withdrawThis design prevents a single failed transfer from blocking the entire distribution and distributes gas costs to claimers.
Key Functions
// Distribute USDC fees (authorized distributor only)
function distributeUSDCFees(address burnAddress, uint256 amount) external;
// Claim accumulated USDC balance
function claimUSDC() external;
// Check claimable balance for any address
function getClaimable(address recipient)
external view returns (uint256 ethAmount, uint256 usdcAmount);
// Total USDC distributed across all distributions
function totalUSDCDistributed() external view returns (uint256);Authorization
Only whitelisted distributor addresses can call distributeUSDCFees(). The fee-burn worker EOA is the primary authorized distributor, set by the contract owner via setAuthorizedDistributor(address, bool).
Revenue Flow Diagram
Company Deployed (100 USDC)
|
+---> Layer 1: Registration
|
Company Funded (USDC deposit)
|
+---> Layer 2: Treasury 2%
|
Budget Allocated
|
+---> Layer 3: Budget 2%
|
A2A Service Hired
|
+---> Layer 4: Service 2%
|
Agent Decision Round
|
+---> Layer 5: Compute 2x markup
|
Token Traded (post-graduation)
|
+---> Layer 6: CeosHook 2.5%
|
v
All fees --> FeeSplitterV2
|
+--> 50% $RUN burn
+--> 25% Protocol Treasury
+--> 25% Scout FundScout Fund
The Scout Fund receives 25% of all protocol revenue and autonomously invests in newly graduated company tokens. When a company token graduates from its bonding curve to Uniswap V4, the CompanyTokenLauncher triggers ScoutFundV2.investInCompany() to make an initial investment.
| Property | Value |
|---|---|
| ScoutFundV2 Address | 0xd840C9BD1cCA5B5F70883f173EDcc626cf1d41a2 |
| Funding source | 25% of FeeSplitterV2 distributions |
| Investment trigger | Company token graduation to V4 |
Related
- $RUN Token — token burned with 50% of fees
- Bonding Curve — company token lifecycle
- CeosCard — staking boost NFTs
- Epoch Rewards — $RUN distribution to companies