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: stellarpgq3 on the testnet contract CBXKUSLQPVF35FYURR5C42BPYA5UOVDXX2ELKIM2CAJMCI6HXG2BHGZA. 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 u32 weight f0aef91. The membership contract answers it with a member’s NQG 2e6166f, 825e3d7, so a program’s score plugs in per project.
  • SCF NFT and Neurons, met and exceeded: membership rebuilt as stellar-membership ccc3d5f and moved out of Tansu 07b55bd, f1631dc. On top of the sync with the source of truth, it adds recovery, several operators 7d00ec2, promotions to the next role voted by the Pilots on Tansu d85c76b, two audit passes 2b7565f, 166d59c and full documentation 6f80468. 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 created 85e7a6b, and the name is checked again at execution, with a warning if it now points elsewhere ba43800.
  • 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 authority f490db1.

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 Finality 958f391.
  • Governance configuration: voting period, execution delay and finality threshold per project 2f97539, 4ee9d62, 258923e; NQG weight per project f0aef91; token-weighted proposals reserved to maintainers a9b9334.
  • 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 proposal 720e640. Documented in Spam and Sybil resistance dfba035.
  • Discussions: rendered on proposals 844f8c1, and produced from the GitHub thread by this repository’s pg-award-proposal-onchain.yml workflow.

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 Err the 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 return Result would 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, fixes f490db1 to f8985ff, and the status of each finding ef1e095. A second pre-audit after the fixes 55ace02 finds 0 Critical, 0 High and 2 Medium issues, and rates the contracts close to audit-ready. Operations runbook 51b3318.
  • Dependencies: soroban-sdk 28.0.0 7d9b274, Protocol 28 30984c2, every dApp dependency updated 90b7a62, 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 path a1fee21, installs as an accessible app that works offline 31ce603, f9638ae, and runs its end-to-end flows on testnet 30d5b11.
  • 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 Tansu e75becc, and every commit linked on this page is on Radicle.

2026 Q2

P1: Q2 Public Goods Award on Tansu testnet

Proof of completion:

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:

  • NqgProjectKey and contracts/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_evidence API: #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:

Proposed Impact

Q3 made Tansu reliable for its first users. Q4’s objective is real use on mainnet. The main goals are:

  1. 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.

  2. Membership on mainnet: this is the largest item of the quarter. We bring stellar-membership and 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.

  3. 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.

  4. 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 stellarmembers project, 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

PG Atlas 90d Contributors Pony Factor Adoption

  • As the project representative, I agree to the Legal Acknowledgements.

Back to top

This site uses Just the Docs, a documentation theme for Jekyll.