Overview
++ The governance register is currently unreachable. No live data can be shown. +
++ The governance register is currently unreachable. No live data can be shown. +
+Track your Bitcoin treasury, decisions, and active votes.
++ No organization is registered yet. Once one exists, its votes, treasury, and audit + trail appear here. +
+ )} + {org && ( ++
{dbError
? "The treasury register is currently unreachable. No balance can be shown."
: "No organization is registered yet, so there is no treasury to show."}
diff --git a/src/app/(dashboard)/dashboard/voting/page.tsx b/src/app/(dashboard)/dashboard/voting/page.tsx
index 0294cc7..cdcabc3 100644
--- a/src/app/(dashboard)/dashboard/voting/page.tsx
+++ b/src/app/(dashboard)/dashboard/voting/page.tsx
@@ -20,7 +20,7 @@ export default async function VotingPage() {
return (
+
The voting register is currently unreachable. No session data can be shown.
+
No voting session has been opened yet. When one opens, registered members vote
here by signing the canonical vote message with their own Bitcoin wallet.
- Solon is building the future of organizational governance through radical transparency
- and cryptographic democracy. We believe every organization deserves complete financial
- transparency and democratic decision-making without the overhead of traditional systems.
+ Most governance runs on trust: trust the treasurer, trust the minutes, trust that the
+ vote was counted. Solon replaces that trust with verification. Votes are Bitcoin
+ signed messages anyone can re-check. Decisions are published as self-verifying
+ documents. The audit trail is append-only. The treasury is watch-only — Solon never
+ holds keys or funds.
- By leveraging Bitcoin's immutable blockchain and cryptographic signatures, we enable
- organizations to operate with unprecedented transparency while maintaining security
- and privacy where needed.
+ Solon is the governance pillar of a three-product stack, and it practices what it
+ ships: its first production organization governs the stack itself, with AI agents
+ from the sibling products registered as voting members and humans holding the red
+ lines.
+ Solon is operated as part of the OrangeCat stack and governed on its own rails. The
+ current voting members — including the sibling products' agents, The Cat and Loki —
+ and every policy they govern are public on the ecosystem page.
+
- Join the future of transparent governance. Contact us to learn how Solon can
- revolutionize your organization's operations.
+ The live governed state — members, policies, decisions — is public. So is the code.
{description} {role} {bio} No active policies. No proposals yet.
A vote is a Bitcoin signed message. Sign the canonical vote message with the
wallet that holds your registered member address, then POST the signature:
@@ -40,70 +40,70 @@ export default function IntegrationPage() {
Multi-signature Bitcoin custody with enterprise-grade security practices
+ Compromising Solon's servers yields no keys and no funds — only records that were
+ already public.
+ Cryptographically verified voting with tamper-proof results
+ A vote that doesn't verify against the member's Bitcoin address is rejected. Solon
+ cannot invent votes, and neither can an attacker.
+ Blockchain-anchored records that cannot be altered or deleted
+ Decisions travel with their evidence. Consumers recount the tally themselves —
+ Solon's word is evidence, not authority.
+
+ Verify, don't trust:{' '}
+
+ how voting works
+
+ {' · '}
+
+ the live audit trail
+
+ {' · '}
+
+ the source code
+
+ {description} Organization: {orgName}
No treasury source registered yet. When one is, its balance renders here from a
@@ -50,7 +50,7 @@ export default function BitcoinTreasury({ orgName, report }: { orgName: string;
{session.rules} {pillar.shortDesc} {area.shortDesc}
- {pillar.description}
- {area.description}
- Unlike traditional governance platforms, Solon doesn't just add transparency as an afterthought.
- Every pillar is designed from the ground up to leverage Bitcoin's revolutionary properties:
- decentralization, immutability, and cryptographic security.
- No single point of failure or control Permanent record of all activities Mathematically verifiable security {t.tagline}Voting
- Voting
- Our Mission
+ Why Solon exists
The Team
- Who runs it
+
+ {ECOSYSTEM_PILLARS.map((p) => (
+
Ready to Transform Your Organization?
+ See it running
{title}
+ {title}
{name}
-
{pillar.name}
@@ -117,7 +117,7 @@ export default async function EcosystemPage() {
@@ -148,7 +148,7 @@ export default async function EcosystemPage() {
href={pillar.url}
target="_blank"
rel="noopener noreferrer"
- className="text-sm font-semibold text-[var(--solon-orange)] hover:text-[var(--solon-orange-dark)]"
+ className="text-sm font-semibold text-solon-orange hover:text-solon-orange-dark"
>
{pillar.url.replace("https://", "")} →
@@ -160,7 +160,7 @@ export default async function EcosystemPage() {
{/* How a decision travels */}
+
How a decision travels
@@ -173,7 +173,7 @@ export default async function EcosystemPage() {
"OrangeCat and FleetCrown are notified — and OrangeCat re-verifies every vote signature against its own pinned keys before acting. A decision is evidence, not authority.",
].map((step, i) => (
+
What is governed here, live
{dbError && (
@@ -210,14 +210,14 @@ export default async function EcosystemPage() {
+
{org.name} — members
{members.map((m) => (
Active policies
+ Active policies
{policies.length === 0 ? (
Recent proposals
+ Recent proposals
{proposals.length === 0 ? (
How a vote works
+ How a vote works
What this gives you
+ What this gives you
Cast a cryptographic vote
+ Cast a cryptographic vote
Live endpoints
+ Live endpoints
+
POST /api/proposals
file a signed proposal
+
POST /api/proposals/[proposalId]/open
open the voting session
+
GET /api/sessions/[sessionId]
session, snapshotted rules, live tally
+
POST /api/sessions/[sessionId]/votes
cast a signed vote
+
POST /api/sessions/[sessionId]/close
close after the window and decide the outcome
+
GET /api/orgs/[slug]
organization + public member roster
+
GET /api/orgs/[slug]/proposals
all proposals with session state
+
GET /api/orgs/[slug]/policies/[key]
policy version history
+
GET /api/orgs/[slug]/audit
append-only audit stream
+
GET /api/orgs/[slug]/treasury
live on-chain treasury balances
+
GET /api/v1/decisions/[sessionId]
@@ -111,7 +111,7 @@ export default function IntegrationPage() {
+
GET /api/health
service health
diff --git a/src/app/security/page.tsx b/src/app/security/page.tsx
index 7885086..b761210 100644
--- a/src/app/security/page.tsx
+++ b/src/app/security/page.tsx
@@ -1,72 +1,106 @@
import PageLayout from '@/components/ui/page-layout';
+/**
+ * The real security model, stated plainly. Every claim on this page maps to
+ * code in this repo — nothing aspirational, nothing borrowed from a future
+ * roadmap. The strongest claim Solon can make is what it does NOT have:
+ * no private keys, no custody, no way to rewrite history.
+ */
export default function SecurityPage() {
return (
- Security Guarantees
+ What this buys you
Financial Security
- Nothing to seize
+ Vote Integrity
- Nothing to forge
+ Data Immutability
- Nothing to rewrite
+ {title}
+ {title}
{details.map((detail, index) => (
-
The model
+ The model
Bitcoin Treasury
+ Bitcoin Treasury
Treasury sources (watch-only)
+ Treasury sources (watch-only)
{report.sources.length === 0 ? (
diff --git a/src/components/dashboard/voting-interface.tsx b/src/components/dashboard/voting-interface.tsx
index 966666c..c517e35 100644
--- a/src/components/dashboard/voting-interface.tsx
+++ b/src/components/dashboard/voting-interface.tsx
@@ -32,6 +32,8 @@ export default function VotingInterface({ session, tally }: VotingInterfaceProps
const [verdict, setVerdict] = useState {session.title}
+ {session.title}
Tally (weighted)
+ Tally (weighted)
{pillar.title}
- {area.title}
+
+ {area.features.map((feature) => (
+
- {/* Bitcoin Integration Note */}
-
- Revolutionary Integration
-
- Decentralized
- Immutable
- Cryptographic
-
+
{t.title}
+ {/* Bullets — the core claims, each one true of the running system */}
+
{bullets.filter(Boolean).map((b: string) => (
-
-
-
-