UNIMATRIx financial system
May 21, 2026•848 words
UNIMATRIx is a simulated society of LLM-driven agents with personalities, roles, social classes, conversations, opinions, votes, mobility, coalitions, and polarization. And now have a complete financial system, a new core subsystem inside the runtime loop.
Financial state is deliberately centralized
All financial state lives in SQLite, specifically in agents.bank_account and community_account.balance, and the economy module is the only writer. The orchestrator calls apply_tick once per tick, while voting and loan requests enter through pay_prize and grant_loan. This engineering choice gives the simulation a single accounting authority, avoids duplicate state mutation paths, and makes money auditable through persistence instead of being reduced to prompt text.
A transactions table records timestamp, kind, source party, destination party, amount, reason, and optional reference id. The model is intentionally simple, and the store applies transactions atomically. A transaction row is inserted first, then the same SQL transaction mutates the community or agent balances depending on from_party and to_party. Parties can be an agent id, the literal "community", or None, where None represents a source or sink used for bookkeeping and expenses. That means the simulation has a coherent primitive for salary, loan, prize, tax bookkeeping, and costs, even if the economic model remains narrow.
The tick is the monetary clock
The economy advances through apply_tick. For every agent, the module computes gross salary from role prestige, applies tax, pays net salary from the community account to the agent, records tax as bookkeeping, subtracts a fixed cost of living from the agent, subtracts a fixed running cost from the community, refreshes balances from SQLite, and then checks solvency.
The core personal cash-flow equation is:
gross_salary = role_prestige * salary_per_prestige
tax = gross_salary * tax_rate
net_salary = gross_salary - tax
agent_delta_per_tick = net_salary - agent_expense_per_tick
Taxation & Expenses
In the current implementation, the community pays only the net salary. The tax transaction is a bookkeeping row with no balance mutation because the tax never moves out of the community account. This matters because the community treasury does not receive tax as positive cash flow. It avoids paying the tax portion of gross salary. The treasury still drains through net salaries, prizes, loans, and its fixed running cost. In engineering terms, tax rate reduces the burn rate of the treasury rather than creating a revenue stream from agents.
Every agent (and also the community) pays the same fixed cost of living per tick. These costs are independent of agency, effort, class, health, skill, network position, or market conditions. The prompt layer exposes this pressure directly, agents are told that every tick they earn salary proportional to role prestige, pay tax, pay a fixed cost of living, and that personal bankruptcy kills them and ends the simulation. They are also told that if the community treasury reaches zero, society collapses. The prompt explicitly says that higher-prestige roles earn more and that money is one reason to seek a better role. Financial pressure is therefore visible to the LLM decision process.
Credit & prizes
Loan requests are available as an agent action when a banker exists. The prompt describes the request as asking a banker for funds from the community treasury when money is low. The banker prompt asks the banker to decide based on values, impression of the petitioner, treasury state, and the petitioner’s role prestige, then answer exactly yes <amount> or no.
The voting system include also a money_prize proposal. If approved by vote, the voting module calls the economy module’s pay_prize, which transfers funds from the community to the target and records either prize_paid or prize_underfunded. The vote rule is simple majority over valid yes/no votes, with malformed votes becoming null after retries and ties rejected. If the outcome is approved, the proposal is applied.
This makes the community treasury the material substrate of democratic decision, with a vote that can move money.
Finance is the execution engine of the simulation
The financial system is useful because it destroys cheap moral speech. Without money, an LLM society can endlessly produce justifications, alliances, resentments, ideals, and reforms without paying for any of them. With this ledger, every social order has a burn rate. The simulation becomes serious only when the account balances are allowed to contradict the agents’ rhetoric.
Society is not a conversation, but is an allocation machine with a memory, a voting protocol, and a failure condition. Agents may narrate values, but the financial module decides whether those values have executable form. A proposal that promotes someone changes future income. A prize spends common liquidity. A loan exposes discretionary institutional power. A tax rate changes burn dynamics. Bankruptcy ends the experiment. That is the correct abstraction for this kind of simulation.
This financial system should not be interpreted as a neutral model of markets. Is the most important anti-fiction device in UNIMATRIx. It prevents the simulation from becoming pure role-play. It forces agents to inhabit a world where rank, survival, legitimacy, and treasury capacity are coupled. It makes the simulated society answer a precise question: can your social order remain solvent while keeping its members alive?