PLINTH
live on sui mainnet

Feedback
that holds.

Plinth is a Walrus-native feedback and form platform. Forms that rest on Walrus, sealed by default, owned by the people who fill them in.

Form publish: under 60 secondsStorage: Walrus mainnet, erasure codedEncryption: Seal by default
WHY WALRUS.

Forms that outlast
the platform that hosts them.

01

Tamper resistant

Records survive vendors.

Every submission is a Walrus blob with a stable ID, anchored to a Sui object. No silent edits. No vendor lock-in.

02

Owned by submitters

The author keeps the receipt.

The wallet that submitted holds the Sui object. Transfer, revoke, or annotate: always the author's call.

03

Composable

Read by other apps.

Blob IDs are public references. Any app can read, index, or build on top of submitted data.

04

Sealed by default

Privacy where it matters.

Sensitive fields are encrypted with Seal before upload. Decryption is gated by wallet allowlist.

all four properties form one system
How it works

Three steps. The third one
belongs to your community.

01
form-builder
schema → walrus blob

Create.

Drag fields. Set required. Add an admin allowlist. Saved as a Walrus blob the moment you publish.

02
share link
encrypted client-side

Share.

Send a link. Anyone can submit. Sensitive fields are encrypted with Seal before any byte leaves the browser.

03
admin dashboard
submitter keeps ownership

Decide.

Triage in the admin dashboard. Read decrypted responses. Sort, filter, prioritize, and export.

Field Types

Eight inputs.
Every feedback shape, covered.

Same set of fields handles every flow. No bolt-on plugins.

01

Rich text

Paragraphs, headings, links, code. Sanitized.

02

Dropdown

Single or multi select. Searchable for long lists.

03

Checkbox

Multi answer. Renders as a clear list.

04

Star rating

Three, five, seven, or ten. Defaults to five.

05

Screenshot

Drag and drop. Stored as a separate Walrus blob.

06

Video

Short clips up to 200 MB. Streamed from Walrus.

07

URL

Validated. Optional domain allowlist. Live preview.

08

Confirmation

Custom statement. Required. Logged in the receipt.

all fields support required · encrypted · conditional logic
Admin Dashboard

A spreadsheet that
respects authorship.

useplinth.net/app/forms/bug-reports
Bug reports for Plinth12 open3 triaged8 resolved
Sort · Most recentFilter · Severity high
Title
Severity
Status
Submitter
Received
Form reordering breaks on Safari
high
triaged
0xc4f1…18ad
2h ago
Add custom domain support
medium
new
0x77e2…92fb
5h ago
Encrypted email field shows masked preview
low
in progress
0x91ad…0072
1d ago
Walrus aggregator returns 503
high
triaged
0x1d22…44b9
1d ago

notes & status stored as separate blobs · original record untouched · allowlist gated

Onchain Primitive

A submission is a Sui object, owned by the person who wrote it.
Not the form. Not the vendor. The author.

Owned by the author

The wallet that submitted holds the Sui object. No platform intermediary. The receipt is yours.

obj.owner == submitter.wallet

Revocable on demand

Changed your mind? Send a revoke transaction. A tombstone replaces the record as a permanent withdrawal.

plinth::revoke(obj_id)

Transferable anywhere

Move your submission object to any wallet. Composable with any Sui app that can read the blob ID.

transfer::public_transfer(obj)
walrus blobsui objectseal encryptedallowlist gated
Sealed by default

Encrypted before it
leaves your browser.

Sensitive fields are encrypted with Seal before any byte hits the network. Decryption is gated by wallet allowlist, not by us.

field-levelclient-sideallowlist-gatedrevocable
seal-pipeline.ts
01
seal.encrypt(field)
client-side · in-browser AES-256
02
walrus.put(blob)
encrypted payload stored on Walrus
03
sui.attach(object)
Sui object bound to submitter wallet
04
allowlist.verify(wallet)
decryption gated by on-chain allowlist

seal.encrypt(field) walrus.put(blob) sui.attach(object)

zero knowledge to vendor