Tansu - Decentralized project governance on Stellar
Tansu provides cryptographic proof of code integrity and transparent governance for open-source projects.
| Category | Governance Tools |
| Website | https://tansu.dev |
| Repository | https://github.com/Consulting-Manao/tansu |
| Membership | https://radicle.network/nodes/radicle.consulting-manao.com/rad:z4KRDyBiL6kP6n5FWP6kJWga6BXJV |
| First Released | October 2025 |
| Intake | https://github.com/SCF-Public-Goods-Maintenance/scf-public-goods-maintenance.github.io/issues/88 |
| Budget Requested | $50,000 |
| Maintenance Reserve | $12,000 |
| Other | $38,000 |
Project Description
Tansu is a governance and versioning layer for open source projects, built on the Stellar blockchain. It brings transparency, security, and decentralized decision-making to software development by combining on-chain project tracking, a powerful voting platform, and a flexible membership system. It integrates well with the Neural Quorum Governance score making it a great tool for the Stellar community. It is the first platform to offer anonymous voting on Stellar.
Team & Experience
It’s been mostly me, Pamphile Tupui Roy LinkedIn. I am a Pilot and delegate. I have contributed to the Stellar developer documentation, helped with hackathons and participated in multiple Stellar Enhancement Proposals (co-authored SEP-52 and SEP-53). I am also active in the Python sphere, acting as maintainer of SciPy (2M+ daily downloads) and SALib, and serving on the Scientific Python Steering Committee. I know what it means to develop open source solutions, what backward compatibility and maintenance truly mean.
I have been working on Tansu in my free time since around May 2024. I got some help there and there from friends and hired a few people along the years mostly to do frontend related tasks.
Now, I am a Principal Engineer at The Aha Co (GitHub | LinkedIn). We are advising many projects on Stellar as an official integration partner as well as part of the architect program. We are more than 15 devs and still growing strong. Depending on the task, I will leverage 1 to 2 people from the team. Mostly, but not limited:
- Chad Ostrowski (GitHub, LinkedIn, Discord @chadoh) on the architecutre and general flow.
- Willem Wyndham (GitHub, LinkedIn, Discord
@sirwillem), to review my work on smart contracts. - Hugo Heer (GitHub, LinkedIn), a frontend guru.
Retroactive Impact
In Q3 2026, Tansu hosted the second SCF Public Goods Award round. SCF Pilots voted anonymously with NQG-weighted ballots on the stellarpgq3 project on testnet. 18 projects were approved for a total of $453,000, with a median ask of $16,500. 22 Pilots voted, with a median of 17.5 voters per proposal. The vote went through without incident. The computational cost and collateral issues seen in Q2 did not come back.
The Stellar Registry became the second user of Tansu. Its root registry is governed by Tansu votes, and the Registry’s web app now creates Tansu proposals directly from its own forms.
Most of the quarter went into the membership stack, well beyond the sync workflow the deliverable asked for. The SCF membership contract was moved out of Tansu and rebuilt as stellar-membership: a soulbound membership token with verified Discord, GitHub and email and PG Atlas projects, an app and an API, recovery, and operators. Members are now promoted by the Pilots through votes on Tansu, weighed by their NQG, and the membership contract serves NQG to Tansu as voting power. It has 202 commits, all on Radicle.
On Tansu itself, maintainers can now attest commits and evidence until a release is final, discussions travel with proposals, governance is configured per project, and passkey wallets are supported. The quarter ended with a security round: a fresh pre-audit of the contracts, followed by fixes for its Critical and High findings. A second review after the fixes found no Critical or High issue left. The documentation and an operations runbook were brought up to date.
I kept taking part in the Drips Waves. Twelve Stellar Wave issues were closed this quarter, 47 in total.
Past Deliverables
2026 Q3
Q3 D1: Public Goods Award
Proof of completion:
- Q3 round:
stellarpgq3on the testnet contractCBXKUSLQPVF35FYURR5C42BPYA5UOVDXX2ELKIM2CAJMCI6HXG2BHGZA. 19 anonymous proposals, 17 approved on 11 August and a revised Stellarlight proposal approved on 23 September. 18 projects approved for $453,000, median ask $16,500, 22 Pilots voting with a median of 17.5 per proposal. Stellarlight is counted once, at its revised budget. - Program NQG score: each Tansu project sets its own NQG contract, read as a
u32weightf0aef91. The membership contract answers it with a member’s NQG2e6166f,825e3d7, so a program’s score plugs in per project. - SCF NFT and Neurons, met and exceeded: membership rebuilt as
stellar-membershipccc3d5fand moved out of Tansu07b55bd,f1631dc. On top of the sync with the source of truth, it adds recovery, several operators7d00ec2, promotions to the next role voted by the Pilots on Tansud85c76b, two audit passes2b7565f,166d59cand full documentation6f80468. Deployed on testnet. Mainnet with SCF’s member data follows with SDF. - Mid-grant reviews: the grant review process was worked out with the working group. An AI layer takes over the repetitive steps of the reviews.
- Nouns Builder: postponed, as their work is not ready. We held calls with the team to work on the topic and support them.
Q3 D2: Stellar Registry
Proof of completion:
- Registry governed by Tansu: Tansu-DAO-gated registry manager (stellar-registry/contracts#5), verified end to end on testnet: proposal, vote,
trigger, publish. - Proposals from the Registry: the Registry’s web app creates Tansu proposals (stellar-registry/ui#67, #68).
- Templates and name resolution in the dApp: 7 proposal templates and outcome templates, including a Registry publish
8f5c61e,9b7535b, and the Registry’s own proposal forms. Registry names resolve to addresses when the proposal is created85e7a6b, and the name is checked again at execution, with a warning if it now points elsewhereba43800. - Contract lifecycle: documented in Acting on other contracts
dfba035. Outcomes now run from a separate executor contract, so they never act with Tansu’s own authorityf490db1.
Q3 D3: Governance features
Proof of completion:
- Evidence in the dApp: SBOM, CVE and attestation evidence uploaded and listed per commit
c21688c,242cfad. - Endorsement: maintainers attest a commit or an evidence artifact until it is final
6c47a83, documented in Code Finality958f391. - Governance configuration: voting period, execution delay and finality threshold per project
2f97539,4ee9d62,258923e; NQG weight per projectf0aef91; token-weighted proposals reserved to maintainersa9b9334. - Collateral: voting no longer takes collateral
526395e. Sybil resistance relies on voting weight, NQG score or badges, and at most 20 weight-1 votes per proposal720e640. Documented in Spam and Sybil resistancedfba035. - Discussions: rendered on proposals
844f8c1, and produced from the GitHub thread by this repository’spg-award-proposal-onchain.ymlworkflow.
Q3 D4: Maintenance, Security and Operations
Proof of completion:
- Passkey wallets: Nido smart accounts and GHOSTSIG
c66c39c,5c21a20,95d3741. - Result types: not needed, by design. Every failure is a typed error of one enum. Soroban reports a typed panic and a returned
Errthe same way to the caller,Error(Contract, #code), and rolls back both. The dApp maps each code to a message, kept in sync with the contract by a lint check. Changing every entry point to returnResultwould change every signature and binding, and users would see the same errors. - Storage and TTL: users pay for what they use, by design. An archived entry is restored automatically, data intact, by the next transaction that touches it, which pays for it. Extending TTL in the contract would make every caller pay rent for data they may never read, or need a treasury and a keeper forever. Documented for operators in the runbook
51b3318. - Audit-bank prep: fresh pre-audit of the contracts
afcd58f, fixesf490db1tof8985ff, and the status of each findingef1e095. A second pre-audit after the fixes55ace02finds 0 Critical, 0 High and 2 Medium issues, and rates the contracts close to audit-ready. Operations runbook51b3318. - Dependencies:
soroban-sdk28.0.07d9b274, Protocol 2830984c2, every dApp dependency updated90b7a62,f07f86c, Dependabot across Rust, Bun and GitHub Actions. - Upgrade: the testnet contract was upgraded in place, with a migration of proposals to their new storage that kept the Q2 and Q3 rounds
575e2ae,f48aca4,7027798. - Maintenance: the dApp reads the contract through a persistent query cache
b3bfd33, lands every write through one patha1fee21, installs as an accessible app that works offline31ce603,f9638ae, and runs its end-to-end flows on testnet30d5b11. - Drips Wave: for instance #15, #26, #25 (evidence), #215 (discussions), #230, #232 (outcome templates and Registry names), #16 (Git identity), #229 (voting receipt).
- Radicle: development happens on radicle.consulting-manao.com with patches merged there
f737729, Radicle is a supported forge in Tansue75becc, and every commit linked on this page is on Radicle.
2026 Q2
P1: Q2 Public Goods Award on Tansu testnet
Proof of completion:
- Round completed on
stellarpg(on the sub-projectstellarpga) on testnet: testnet.tansu.dev - Q2 round blog post
- Program repository
First PG Award round with anonymous NQG-weighted pilot voting on testnet; 17 projects funded, more than $400,000 disbursed. The work was done as part of a SCF Build Award.
P2: Governance stack
Proof of completion:
- Conflict of interest: #94, #151
- Soroban Domains removed and collateral system: #157, blog
- Anonymous voting, token-weighted ballots, outcome contracts, malicious-proposal flow: governance docs
P3: NQG + scf-membership
Proof of completion:
NqgProjectKeyandcontracts/scf-membership/: #50- Viewer: https://scf.pgatlas.xyz https://github.com/Consulting-Manao/scf-member-explorer
P4: Supply chain and evidence
Proof of completion:
- Unified
set_evidenceAPI: #186,tools/evidence/publish.sh - SBOM CI and on-chain recording: #145, .github/workflows/sbom.yml`
- Workflows improvements:
.github/workflows
P5: Maintainance
Proof of completion:
- Storacha to Filebase IPFS: #56, #139, #141
- See the improved CONTRIBUTING.md.
- Migrating to radicle.consulting-manao.com
Proposed Impact
Q3 made Tansu reliable for its first users. Q4’s objective is real use on mainnet. The main goals are:
-
PG Award on mainnet: the first two rounds ran on testnet. The Q4 round runs on Tansu on mainnet, and the Q1 2027 round is set up there too. The Q4 vote takes place at the start of the quarter, so part of this work is funded retroactively. We also take over from SDF and SCF the running of NQG for Public Goods.
-
Membership on mainnet: this is the largest item of the quarter. We bring
stellar-membershipand its promotions to mainnet with SCF’s member data, keep that data in sync, and, with SDF, push the updates to Discord, so that roles and voting weights come from one contract. -
Governance: new ways to take part in a vote: delegation, veto, voting on several proposals at once and finalizing on a quorum. They need design and UX work first, and must work with memberships.
-
Security and maintenance: close the remaining findings of our pre-audit, get an external audit, operate the new version of the contract on mainnet, and move our releases from GitHub to Radicle.
Conditional: If Nouns Builder on Stellar is ready, coordinate on NQG/Tansu per their roadmap.
Proposed Deliverables
The maintenance reserve of $12,000 covers the work that arrives during the quarter: bug and security fixes, dependencies, releases, the operation of the contract on mainnet and user support. The deliverables below that add something new make up the Other share of $38,000.
D1: Public Goods Award
Tansu hosts the PG Award program, now on mainnet.
- Q4 round on mainnet: intake, D&R, on-chain vote on mainnet, open office hours, execution with SDF Community;
- Q1 2027 round: the project and its voting weights set up on mainnet for the next round;
- NQG for Public Goods: handover from SDF and SCF. We run the NQG that gives the Pilots their voting weights in the program, and the round’s project reads it on mainnet;
- [Conditional Nouns:] Nouns Builder NQG alignment if their work is ready 32e2f07.
Measure: Q4 vote executed on Tansu on mainnet, with the link to the round; the mainnet project of the Q1 2027 round created, with its NQG contract set; the NQG for Public Goods run by us, with the handover and its operation documented.
D2: Stellar membership
The membership of the Stellar community, stellar-membership, goes to mainnet. This is the largest deliverable of the quarter.
- Mainnet deployment: the membership contract and its app, with SDF;
- Member data: existing members moved from the current source of truth, and SCF’s data kept in sync with the contract afterwards;
- [Conditional on SDF Discord:] changes of a membership, such as a new role, pushed to Discord;
- Promotions: role promotions voted by the Pilots on Tansu, in the
stellarmembersproject, weighed by their NQG; - Membership integration: the roles and voting weights of a member shown and used in the Tansu dApp;
- Neurons: decide whether the contract holds the individual neurons of a member next to their NQG score 33d6cff.
Measure: contract deployed on mainnet with members minted, with SDF; SCF’s data in sync with the contract, with the sync documented; one promotion voted on Tansu in stellarmembers and applied by the contract; the roles and voting weights of members shown in the Tansu dApp; the decision on neurons documented; conditional on SDF, a role change on the contract reflected on Discord. Failing the mainnet deployment, the same on testnet.
D3: Governance features
Delegation, veto, batch voting and quorum change how people take part in a vote. They need design and UX work before code, and must work with the memberships of D2.
- Delegation: a member delegates their voting weight to another member, with a cap on the weight one member can receive and no re-delegation 159e843;
- Veto: a way to stop a proposal before it executes. A veto can only reject a proposal, never pass one, and has its own event 4ba4877;
- Batch voting: vote on several proposals at once, as a PG Award round needs. This takes a router contract 5e66d44;
- Quorum: a proposal can be finalized before the end of its voting period once a quorum is reached, with limits so that this does not become an attack vector ac49183;
- Governance settings in the dApp: voting period and execution delay of a project 0f54f01;
- Proposal page: outcome calls simulated while the form is filled, so that a wrong call is caught before the vote and not at execution 026f31d;
- [Stretch Redesign:] a UX/UI audit of the whole dApp with help from the community, and a global redesign from its findings.
Measure: a design for delegation, veto, batch voting and quorum, each with its UX and its link with memberships, published and discussed; at least one of the four usable on testnet from the dApp; the two settings editable in the dApp; outcome simulation in the form live on the dApp. Stretch: the UX/UI audit published, with the redesign it leads to.
D4: Maintenance, Security and Operations
- Token-weighted votes removed: every project takes its voting weights from badges or from its own NQG contract. A project that wants token weight points to a contract that locks the tokens and answers a weight. Tansu then never handles assets for governance: only the deposits against spam transit through the contract;
- Conflicts of interest: the proposer of a proposal is added to its conflicts of interest automatically, so they cannot vote on their own proposal;
- Tally: a script runs the tally phase for all the proposals of a round, instead of one proposal at a time by hand;
- External audit: submission to the Audit Bank;
- Mainnet: operate the new version of the contract, with its first projects registered and voting, and extend the TTL of its entries before they lapse;
- Dependencies: Soroban SDK, Stellar JS, CI deps kept current;
- Drips Wave: continue to promote Stellar and the Drips Wave platform;
- Releases from Radicle: publishing is tied to GitHub today. The release jobs move to our Radicle CI, and releases are published on Radicle with their artifacts d6f5bd9;
- Stellar Registry: each release of the contract is published on the Stellar Registry by the release job c28ee8f.
Measure: token-weighted proposals removed from the contract and the dApp, with a documented example of an NQG contract backed by locked tokens; proposers added to the conflicts of interest of their proposals without a manual step; the tally of a round run by the script; Audit Bank submission made; mainnet transactions of a project registration and of a vote linked; TTL extension transactions linked; dependencies up-to-date; one release published from the Radicle CI with its artifacts, and present on the Stellar Registry.
Metrics loaded from PG Atlas
Legal Acknowledgements
- As the project representative, I agree to the Legal Acknowledgements.