diff --git a/docs/co-circom/co-circom.md b/docs/co-circom/co-circom.md
index f0ea14b..354a808 100644
--- a/docs/co-circom/co-circom.md
+++ b/docs/co-circom/co-circom.md
@@ -1,7 +1,7 @@
# coCircom
-coCircom enables us perform [circom](../resources/circom)'s witness extension and proof generation with MPC. circom and coCircom and their artifacts may be used interchangeably, e.g. a proof generated by coCircom verifies using circom and vice-versa. coCircom also relies on artifacts generated by circom, e.g. the R1CS file, the zkey, and the vkey.
+coCircom enables us perform [circom](https://docs.circom.io/)'s witness extension and proof generation with MPC. circom and coCircom and their artifacts may be used interchangeably, e.g. a proof generated by coCircom verifies using circom and vice-versa. coCircom also relies on artifacts generated by circom, e.g. the R1CS file, the zkey, and the vkey.
-To get started with the coCircom workflow, we require some circuit alongside an input. Based on these files we can create a proof according the workflow depicted below. For more details the Circom setup have a look at the circom docs [extending the witness](https://docs.circom.io/getting-started/computing-the-witness/) and [generating a proof](https://docs.circom.io/getting-started/proving-circuits/).
+To get started with the coCircom workflow, we require some circuit alongside an input. Based on these files we can create a proof according the workflow depicted below. For more details the Circom setup have a look at the circom docs [extending the witness](https://docs.circom.io/getting-started/computing-the-witness/) and [generating a proof](https://docs.circom.io/getting-started/proving-circuits/).
-
\ No newline at end of file
+
diff --git a/docs/contact.md b/docs/contact.md
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/design/known-issues.md b/docs/design/known-issues.md
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/design/roadmap.md b/docs/design/roadmap.md
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/index.mdx b/docs/index.mdx
index cffb879..1821736 100644
--- a/docs/index.mdx
+++ b/docs/index.mdx
@@ -2,100 +2,168 @@
id: index
title: Welcome to TACEO
slug: /
-sidebar_position: 1
+description: Start here to understand TACEO Network, privacy services, and developer tooling
---
import Link from '@docusaurus/Link';
-# Welcome to TACEO Documentation
+# Welcome to TACEO
-TACEO is building the future of privacy-preserving computation through collaborative zero-knowledge proofs and Multi-Party Computation (MPC).
+TACEO provides private execution infrastructure for applications that need to compute on sensitive data without exposing inputs.
-## Choose Your Path
+This documentation is organized around three areas: the **TACEO Network**, **production privacy services** such as TACEO:OPRF and TACEO:Proof, and **developer tooling** for collaborative zero-knowledge workflows.
-
+If you are new, start by choosing the path that best matches your goal. This page is designed to help you get oriented quickly and then move into the right part of the documentation.
-
+## What you can do with TACEO
+
+### Understand the TACEO Network
+
+Learn how the network enables verifiable collaboration over encrypted data, what security assumptions it relies on, and why private execution matters for real applications.
+
+### Integrate privacy services
+
+Use TACEO services when you want production-ready privacy primitives in your application, such as privacy-preserving nullifiers with TACEO:OPRF or private proof delegation with TACEO:Proof.
+
+### Build with developer tooling
+
+Experiment with coCircom and coNoir to run collaborative zero-knowledge workflows in an MPC setting. These tools are intended for developers exploring custom circuits and coSNARK-based systems.
+
+## Choose your path
+
+
-### π§ CoSNARKs Development
+
+
+π **Understand how The TACEO Network works**
+
-**Build collaborative zero-knowledge circuits**
+
-Learn how to create circuits where multiple parties can jointly generate zero-knowledge proofs without revealing their private inputs to each other.
+**Best for:** Researchers, partners, and technical stakeholders
-**Perfect for:**
-- Building privacy-preserving applications
-- Multi-party computation workflows
-- Collaborative proof generation
+**Start here:**
+1. **[Read Network Overview](/docs/taceo-network/)** - Understand the motivation and system model
+2. **[Review Architecture](/docs/taceo-network/network#how-the-network-works)** - See how the network operates
+3. **[See Real Applications](/docs/taceo-network/network#the-missing-layer)** - Understand where this is used in practice
-
- Explore CoSNARKs Docs
-
+**Next steps:** Explore the [Security Model](/docs/taceo-network/network#security-model) and [Network Governance](/docs/taceo-network/network#network-governance)
+
-
+
+
+β‘ **Add privacy services to my application**
+
+
+
-### β‘ TACEO:Proof Network
+**Best for:** Application developers, product teams, and technical founders
-**Offload proof generation to our network**
+**Start here:**
+1. **[Choose Your Service](/docs/services/overview)** - Compare TACEO:OPRF and TACEO:Proof
+2. **[Review TACEO:OPRF](/docs/taceo-oprf/overview)** - Understand privacy-preserving nullifiers
+3. **[Review TACEO:Proof](/docs/taceo-proof/overview)** - Understand private proof delegation
-Use our production-ready MPC network to generate Groth16 proofs without revealing witness data. Scale beyond client-side limitations.
+**Next steps:** [Email us for production access](mailto:hello@taceo.io) and [join Discord](https://taceo.io/discord) for technical support
-**Perfect for:**
-- Mobile and web applications
-- Scalable proof generation
-- Production deployments
+
+
+**Best for:** Crypto developers, researchers, and privacy-tech experimenters
+
+**Start here:**
+1. **[CoSNARKs Overview](/docs/overview)** - Understand collaborative zero-knowledge proofs
+2. **[Install Tools](/docs/getting-started/install)** - Set up coCircom or coNoir locally
+3. **[Run an Example](/docs/getting-started/quick-start-co-circom)** - Try your first collaborative circuit
+
+**Next steps:** Explore [examples](/docs/examples/) and [network configuration](/docs/network-config/)
+
+**Note:** These tools are currently for experimentation and development. They require running your own MPC environment and are not the same as using TACEOβs managed services.
+
-## New to Zero-Knowledge Proofs?
+## What is available today
+
+- **TACEO Network documentation** explains the system architecture, security model, and application context
+- **TACEO:OPRF** and **TACEO:Proof** are the main service entry points for teams integrating privacy features today
+- **Developer tooling** is available for teams exploring collaborative circuits and MPC-based proving workflows
-
+This means some parts of the docs describe production-oriented services, while others describe lower-level or experimental developer workflows. If you are evaluating TACEO for an application, the services section is usually the right place to begin.
-Start with our primers to understand the fundamentals:
+## Learning Resources
-- **[MPC Primer](primer/mpc-primer.md)** - Understanding Multi-Party Computation
-- **[Collaborative SNARKs Primer](primer/collabSNARKs-primer.md)** - How coSNARKs work
+New to privacy-preserving computation? Start here:
-Or watch our introductory videos:
-- **[Overview of TACEO](https://www.youtube.com/watch?v=tlVFbr3_eEU)** - High-level introduction
-- **[MPC-Enabled Proof Markets](https://www.youtube.com/watch?v=4-W5nnsf9-A)** - Technical deep dive
+
+
+
+
+**π Understand the Basics**
+
+
+
Secure Multiparty Computation
+
Collaborative SNARKs Primer
+
-## Need Help?
+
+
+**π‘ See Use Cases**
+
+
+
DeFi Applications
+
AI & Machine Learning
+
Gaming & NFTs
+
+
+
-- π¬ Join our [Discord community](https://taceo.io/discord) for real-time support
-- π§ [Contact us](contact.md) for enterprise inquiries
-- π Report issues on our GitHub repositories
+
+
+**πΊ Watch Videos**
+
+
+
CoSNARKs Overview
+
MPC-Enabled Proof Markets
+
+
+
+
+
+
+## Get In Touch
+
+
+
+**Questions? We're here to help.**
+
+{/* prettier-ignore */}
+
+ π¬ Join Discord
+ π§ Email Us
+
+
+
---
-*Ready to start building privacy-preserving applications? Choose your path above!*
+**Ready to dive deeper?** Use the sidebar to explore the TACEO Network, Services, and Developer Tools sections.
\ No newline at end of file
diff --git a/docs/resources/circom.md b/docs/resources/circom.md
deleted file mode 100644
index 8d680ec..0000000
--- a/docs/resources/circom.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Circom
-
-We refer to the [circom documentation](https://docs.circom.io/).
diff --git a/docs/services/overview.mdx b/docs/services/overview.mdx
new file mode 100644
index 0000000..c2f8247
--- /dev/null
+++ b/docs/services/overview.mdx
@@ -0,0 +1,143 @@
+---
+title: Privacy Services Overview
+description: Choose the right privacy service for your application
+---
+
+import Link from "@docusaurus/Link";
+
+# Privacy Services on TACEO Network
+
+The TACEO Network provides production-ready privacy services that your application can integrate today. Each service handles different privacy-preserving computation needs.
+
+## Which Service Do I Need?
+
+
+
+
+
+### **TACEO\:OPRF**
+
+_Oblivious Pseudorandom Function_
+
+**Use when you need:**
+
+- Privacy-preserving uniqueness checks
+- Generate nullifiers without revealing identity
+- Private set membership checks (e.g. PSI-style protocols)
+- Identity-based rate limiting or eligibility checks
+
+**Perfect for:**
+
+- Biometric identity and uniqueness verification
+- Anonymous credentials and pseudonymous identities
+- Builder codes and private access / eligibility systems
+- Identity-based rate limiting
+
+{/* prettier-ignore */}
+Learn More
+
+
+
+
+
+### **TACEO\:Proof**
+
+_Private Proof Delegation_
+
+**Use when you need:**
+
+- Generate ZK proofs without revealing witness data
+- Scale proof generation beyond client devices
+- Mobile/web app proof generation
+- Production-ready Groth16 proofs
+
+**Perfect for:**
+
+- DeFi applications with private transactions
+- Identity systems requiring proof of credentials
+- Gaming with hidden state verification
+- Any app needing scalable ZK proofs
+
+{/* prettier-ignore */}
+Learn More
+
+
+
+
+
+## Coming Soon
+
+
+
+
+
+### **TACEO\:OMap**
+
+_Private Reads & Writes_
+
+**Deployed, onboarding first applications**
+
+Private data structures and confidential shared state management across multiple parties.
+
+
+
+
+
+### **TACEO\:Match**
+
+_Distributed Biometric Uniqueness_
+
+**In active integration**
+
+Privacy-preserving biometric matching and verification without centralized biometric storage.
+
+
+
+### π **Ready to integrate?**
+
+1. **Choose your service** from the options above
+2. **Read the service documentation** for technical details
+3. **Try the quickstart** to see it in action
+4. **Contact us** for production access and support
+
+{/* prettier-ignore */}
+
+ Get Production Access
+ Join Discord Community
+
+
+
+
+## Production Applications
+
+The TACEO Network already powers privacy infrastructure for:
+
+- **World** - Biometric identity verification at global scale
+- **zkPassport** - Privacy-preserving identity verification
+- And growing ecosystem of privacy-focused applications
+
+---
+
+Need help choosing the right service? [Join our Discord](https://taceo.io/discord) or [email our team](mailto:hello@taceo.io).
diff --git a/docs/taceo-network/index.mdx b/docs/taceo-network/index.mdx
new file mode 100644
index 0000000..e2485c3
--- /dev/null
+++ b/docs/taceo-network/index.mdx
@@ -0,0 +1,101 @@
+---
+title: TACEO Network Overview
+description: Understand what the TACEO Network is, who this section is for, and where to go next
+slug: /taceo-network/
+---
+
+import Link from '@docusaurus/Link';
+
+# TACEO Network
+
+The TACEO Network is the coordination and execution layer that enables private computation across independent infrastructure providers.
+
+It is designed for applications that need to compute on sensitive data without exposing the underlying inputs to any single operator. Instead of relying on a centralized trusted party, the network uses threshold cryptographic protocols and distributed execution across committees of nodes.
+
+This section explains how the network is structured, what security assumptions it relies on, and how it relates to TACEO services and developer tooling.
+
+## Who this section is for
+
+This section is most useful for:
+
+- teams evaluating TACEO as infrastructure for privacy-preserving applications
+- researchers and technical stakeholders who want to understand the network model
+- partners who need a high-level explanation of how private execution is coordinated
+- developers who want context before integrating services built on top of the network
+
+If your primary goal is to integrate a production service, you may want to start in [TACEO Services](/docs/services/overview) and then return here for architectural context.
+
+## What this section covers
+
+### Network architecture
+
+How applications interact with privacy services, how service instances are organized, and how committees of MPC nodes execute confidential computations.
+
+### Security model
+
+What the network assumes about node operators, how threshold security works, and why no single operator can access the underlying private data.
+
+### Governance and coordination
+
+How the network is currently coordinated, how upgrades are handled, and how operators and applications participate in operational decisions.
+
+### Real-world application context
+
+Why the TACEO Network exists, what kinds of systems it is intended to support, and how it relates to services such as TACEO:OPRF and TACEO:Proof.
+
+## TACEO Network vs TACEO Services vs Developer Tooling
+
+These parts of the documentation are related, but they serve different purposes:
+
+- **TACEO Network** explains the infrastructure and trust model
+- **TACEO Services** explains the managed privacy-preserving services that applications integrate today
+- **Developer Tooling** explains lower-level tools for collaborative zero-knowledge workflows and experimentation
+
+If you are evaluating TACEO for a product, the usual flow is:
+
+1. understand the TACEO Network at a high level
+2. choose the service that matches your use case
+3. dive into detailed service or implementation docs
+
+## Start here
+
+
+
+
+
+**Understand the system**
+
+
+
How the Network Works
+
Interacting with the Network
+
+
+
+
+
+
+**Review trust and safety**
+
+
+
Security Model
+
Network Governance
+
+
+
+
+
+
+**See how it connects to products**
+
+
+
TACEO Services Overview
+
Privacy Services on the Network
+
+
+
+
+
+
+---
+
+Ready to continue? Start with the full [TACEO Network reference](/docs/taceo-network/network).
\ No newline at end of file
diff --git a/docs/taceo-network/network.mdx b/docs/taceo-network/network.mdx
new file mode 100644
index 0000000..1de336d
--- /dev/null
+++ b/docs/taceo-network/network.mdx
@@ -0,0 +1,217 @@
+# TACEO Network: How It Works
+
+The TACEO Network is a private execution layer for digital infrastructure.
+
+It encrypts and distributes sensitive computation across independent node operators so that no single party controls the data, the keys, or the outcome.
+
+The cryptographic infrastructure behind the network has been deployed in production systems used in World ID, supporting identity verification for more than 18 million users.
+
+Applications integrate privacy services through APIs. Under the hood, those services route confidential requests to MPC node committees that compute over encrypted shares and return verifiable outputs.
+
+## The Missing Layer
+
+Digital systems increasingly depend on shared infrastructure, but sensitive execution is still often centralized.
+
+Consensus layers and settlement rails exist. What is usually missing is an execution layer that can coordinate on private data without introducing a single trusted intermediary.
+
+The TACEO Network introduces this missing layer through **private shared state**.
+
+In practice, this means applications can ask narrowly scoped questions over sensitive data and receive verifiable answers without seeing the underlying raw inputs.
+
+Examples include:
+
+- checking eligibility or policy conditions without disclosing full identity records
+- verifying uniqueness without exposing biometric templates
+- evaluating private risk or account conditions without revealing complete user data
+
+Only the requested result is revealed. The underlying inputs remain confidential throughout execution.
+
+## How the Network Works
+
+While developing privacy-preserving MPC protocols for biometric uniqueness, we saw that teams were spending significant effort assembling and operating MPC networks with trusted counterparties.
+
+The TACEO Network removes this burden by providing shared MPC infrastructure.
+
+It executes requests through privacy services running on committees of independent MPC nodes.
+
+Each request follows the same high-level flow:
+
+1. **Application request**
+ An application sends a request through a TACEO service API, for example proof generation, private verification, or private state updates.
+
+2. **Service instance routing**
+ The request is routed to a specific service instance. Each instance has its own cryptographic keys, committee configuration, and operational policy.
+
+3. **Distributed MPC execution**
+ The selected committee executes the protocol over encrypted or secret-shared inputs. No single node can reconstruct the full private input by itself.
+
+4. **Threshold completion**
+ Once the required threshold of nodes completes the protocol, partial outputs are combined into a final result.
+
+5. **Verifiable response**
+ The service returns the result to the application, optionally including cryptographic artifacts that allow downstream verification.
+
+A simplified architecture is shown below.
+
+```
+Application
+ β
+Service API
+ β
+Service Instance
+ β
+MPC Node Committee
+ β
+Result (+ optional proof material)
+```
+
+This model allows many applications to share the same privacy infrastructure while keeping execution isolated at the service-instance level.
+
+## Interacting with the Network
+
+Applications integrate with TACEO services through APIs.
+
+From an integration perspective, each request has three parts: input preparation, service execution, and result handling.
+
+### 1) Input preparation
+
+Applications prepare service-specific inputs before submission. Depending on the service, this can include:
+
+- encrypted payloads
+- blinded identifiers
+- proof generation parameters
+- confidential state transition requests
+
+Inputs are scoped to the service instance the application is configured to use.
+
+### 2) Service execution
+
+After request validation, the service instance routes the job to its assigned MPC committee.
+
+Nodes execute the protocol over encrypted or secret-shared data and produce partial outputs. A final output is produced only when the configured threshold is met.
+
+Applications do not need to orchestrate node-level communication themselves; this is handled by the service and protocol stack.
+
+### 3) Result handling
+
+The application receives a service response that may include:
+
+- a verification decision or policy outcome
+- a derived private identifier
+- an updated private-state commitment
+- proof or verification artifacts, where applicable
+
+Integrators should treat service outputs as narrowly scoped answers to the submitted request, and should verify returned artifacts wherever verification is available.
+
+## Privacy Services
+
+The TACEO Network grows through purpose-built privacy services.
+
+Each service provides a specific cryptographic capability that applications can integrate directly through TACEO APIs and SDKs.
+
+### TACEO\:OPRF
+
+Enables private credential and uniqueness verification using oblivious pseudorandom function protocols.
+
+**Status:** Live in production.
+
+### TACEO\:Proof
+
+Generates verifiable zero-knowledge proofs for applications and protocols that need outsourced proving.
+
+**Status:** Live in production.
+
+### TACEO\:OMap
+
+Enables verifiable private storage and retrieval for shared confidential state, supporting use cases such as private ledgers and registries.
+
+**Status:** Deployed and onboarding initial applications.
+
+### TACEO\:Match
+
+Distributes identity matching across MPC node committees so no single party holds complete raw biometric data.
+
+**Status:** In active integration.
+
+Multiple applications can run separate service instances with isolated keys, policies, and committee configurations.
+
+## Node Operators
+
+The network is operated by independent node operators running MPC infrastructure.
+
+For each service instance, computation is assigned to a committee of nodes rather than a single operator.
+
+This committee model is what enforces distributed trust:
+
+- no single operator can unilaterally access full private inputs
+- no single operator can produce a valid result alone
+- threshold participation is required for successful execution
+
+Node operators are currently permissioned and curated for operational reliability and security.
+
+As the network expands, node participation is expected to broaden while preserving threshold-based security guarantees.
+
+## Security Model
+
+The TACEO Network is built on threshold MPC protocols designed to protect data during computation.
+
+At a high level, the security model assumes:
+
+- fewer than the configured threshold of nodes collude in a given committee
+- node operators run approved protocol implementations correctly
+- service and governance controls are operated according to network policy
+
+Under these assumptions, private inputs remain confidential and outputs are produced through protocol-level distributed execution.
+
+In practical terms, security combines cryptographic guarantees with operational controls, including committee diversity, controlled service rollout, and active infrastructure monitoring.
+
+## Network Governance
+
+The TACEO Network is currently operationally coordinated by TACEO.
+
+This launch-phase governance model prioritizes safety and reliability for privacy-critical production workloads.
+
+Current governance responsibilities include:
+
+- approving services and circuit deployments
+- managing node participation and infrastructure requirements
+- coordinating protocol and software upgrades
+- managing incident response and operational continuity
+
+### Application participation
+
+Applications using the network are involved in upgrade coordination for the services they depend on.
+
+Major changes are coordinated through an off-chain process with production integrators so service evolution is aligned with real workload requirements.
+
+### Node participation
+
+The network is operated by a set of independent node operators.
+
+Node operators are currently curated to ensure reliability and security. Organizations with privacy-critical workloads may also participate as operators where appropriate.
+
+### Evolution
+
+Governance is expected to broaden as service adoption and operator participation grow.
+
+Future iterations may introduce additional shared-control mechanisms for service approvals, registry management, and network standards.
+
+## Roadmap
+
+The TACEO Network is evolving toward a more distributed and scalable infrastructure for confidential computation.
+
+Key areas of development include:
+
+**Expansion of Node Operators**
+
+Increasing the number and diversity of independent infrastructure operators participating in the network.
+
+**Hardware-based attestation**
+
+Exploring the use of confidential computing technologies such as AMD SEV-SNP and Intel TDX to provide additional assurances that nodes execute approved software.
+
+**Improved developer integrations**
+
+Expanding APIs, SDKs, and tooling to simplify integration of privacy services into applications.
+
+These developments aim to make confidential computation infrastructure more robust, accessible, and scalable for real-world applications.
diff --git a/docs/taceo-proof/dev/bestpractice.mdx b/docs/taceo-proof/dev/bestpractice.mdx
index f09311a..df2ee05 100644
--- a/docs/taceo-proof/dev/bestpractice.mdx
+++ b/docs/taceo-proof/dev/bestpractice.mdx
@@ -63,19 +63,19 @@ The choice depends on your use case. Hereβs what to consider:
### Handling proof latencies & fallbacks
When scheduling a coSNARK execution, there are a few practical steps and strategies to help reduce latency and improve robustness in case of failures.
- - You can **cache** the used **Node Providers** temporarily if you're planning to submit additional proofs soon after. Just be aware that **Node Providers can go offline** β if a cached key is stale, your request will fail at scheduling time.
+ - You can **cache** the used **node operators** temporarily if you're planning to submit additional proofs soon after. Just be aware that **node operators can go offline** β if a cached key is stale, your request will fail at scheduling time.
This reduces them amount of API calls to schedule a coSNARK job to just 1!
- After encrypting your input shares for the selected providers, you include the corresponding Node Provider IDs and submit the job.
-If one or more of the selected Node Providers is offline or unresponsive, the call may fail. In that case, youβll need to:
+If one or more of the selected node operators is offline or unresponsive, the call may fail. In that case, youβll need to:
- 1) Fetch a new set of Node Providers.
+ 1) Fetch a new set of node operators.
2) Encrypt the shares again using the new keys.
3) Retry scheduling the job.
### Redundancy & resilience strategies
To improve reliability or reduce tail latency, you can **schedule multiple coSNARK executions in parallel** and accept the one that completes first. This is especially useful in latency-sensitive applications.
-> β οΈ Important: If you schedule redundant jobs, you **must perform secret-sharing separately for each**. Even if some Node Providers overlap across jobs, this prevents any leakage and maintains security. If you are using our client libraries, this is done for you.
+> β οΈ Important: If you schedule redundant jobs, you **must perform secret-sharing separately for each**. Even if some node operators overlap across jobs, this prevents any leakage and maintains security. If you are using our client libraries, this is done for you.
At the moment, redundancy handling needs to be implemented at the **call site**. We're exploring the possibility of **native support for redundant job scheduling** in the future.
diff --git a/docs/taceo-proof/ops/onboarding.mdx b/docs/taceo-proof/ops/onboarding.mdx
index 10c6af8..c7fe18c 100644
--- a/docs/taceo-proof/ops/onboarding.mdx
+++ b/docs/taceo-proof/ops/onboarding.mdx
@@ -1,10 +1,10 @@
# Onboarding as a Node Provider for TACEO:Proof
-TACEO:Proof is currently in the early stages of decentralization. At this time, we operate a permissioned network with a vetted set of Node Providers. However, we're actively expanding, and if you're interested in joining as a Node Provider, weβd love to hear from youβreach [out here](mailto:office@taceo.io).
+TACEO:Proof is currently in the early stages of decentralization. At this time, we operate a permissioned network with a vetted set of node operators. However, we're actively expanding, and if you're interested in joining as a Node Provider, weβd love to hear from youβreach [out here](mailto:office@taceo.io).
## Hardware & Network Prerequisites
-To ensure reliable performance, we expect Node Providers to be able to run **multiple CSEs** in parallel. Running only a single CSE introduces bottlenecks: all jobs assigned to your node would have to queue behind that one instance, slowing down the entire network.
+To ensure reliable performance, we expect node operators to be able to run **multiple CSEs** in parallel. Running only a single CSE introduces bottlenecks: all jobs assigned to your node would have to queue behind that one instance, slowing down the entire network.
-Since weβre still using a permissioned set of node providers, we canβt tackle throughput by sheer amount of online nodes. Thatβs why your setup should support **horizontal scaling**βmultiple CSEs running simultaneously.
+Since weβre still using a permissioned set of node operators, we canβt tackle throughput by sheer amount of online nodes. Thatβs why your setup should support **horizontal scaling**βmultiple CSEs running simultaneously.
### Performance Requirements
Each CSE should be able to execute our [Groth16 prover](https://github.com/TaceoLabs/co-snarks/tree/main/co-circom/co-groth16) for a circuit of size $2^{16}$ **in under one second**. This is our current baseline for acceptable latency and throughput.
diff --git a/docs/taceo-proof/overview.mdx b/docs/taceo-proof/overview.mdx
index b600bf1..39ac462 100644
--- a/docs/taceo-proof/overview.mdx
+++ b/docs/taceo-proof/overview.mdx
@@ -8,7 +8,7 @@ Clients submit encrypted input shares and a short-lived voucher, and receive bac
### Key terminology
- **CCL (Cryptographic Coordination Layer):** Orchestrates jobs, manages vouchers and blueprints, dispatches work via gRPC and collects proofs.
-- **Node Provider:** Provides computation power to the network by running CSEs. For every coSNARK a randomly selected collection of Node Providers computes the coSNARK.
+- **Node Provider:** Provides computation power to the network by running CSEs. For every coSNARK a randomly selected collection of node operators computes the coSNARK.
- **CSE (coSNARK Engine):** Dockerised binary that connects peer-to-peer over TCP, executes the MPC + SNARK circuit, and produces proof shares. A single Node Provider can host multiple CSEs for scalability.
- **Blueprint:** A circuit definition plus proving/verification keys.
- **Voucher:** A permit generated by the CCL on behalf of a blueprint creater, that authorises a specific blueprint and usage limits.
@@ -18,7 +18,7 @@ Clients submit encrypted input shares and a short-lived voucher, and receive bac
### High-level architecture
1. Client packages inputs (with or without local witness extension), encrypts shares under the selected Node Provider's public keys, and calls the CCL.
-2. CCL verifies the voucher, writes a job record, and notifies the Node Providers.
+2. CCL verifies the voucher, writes a job record, and notifies the node operators.
3. CSEs receive the job via gRPC, form an MPC group over TCP, run the full SNARK circuit inside MPC, assemble the Groth16 proof, and hand it back to the CCL.
5. CCL gathers the final proof, verifies node signatures, stores the result, and returns it to the client.
@@ -35,19 +35,19 @@ Clients submit encrypted input shares and a short-lived voucher, and receive bac
### How it works
-1) **Request set of Node Providers**
+1) **Request set of Node operators**
- The client gives you the ability to request a set of 3 distinct Node Providers of **TACEO:Proof**.
- You receive the Node Providers with their ids, encryption keys and verification keys.
- You should request a new set of Node Providers for each coSNARK job to decrease waiting times.
- We do not recommend to use the same Node Providers over a longer period of time.
- But you may **cache** them temporarily if you're planning to submit additional proofs soon after. Just be aware that **Node Providers can go offline** β if a cached key is stale, your request will fail at scheduling time.
- > π‘ If you're submitting multiple proofs at once, you can reuse the same set of Node Providers across jobs. This reduces the number of HTTP calls and enables you to encrypt in parallel.
+ The client gives you the ability to request a set of 3 distinct node operators of **TACEO:Proof**.
+ You receive the node operators with their ids, encryption keys and verification keys.
+ You should request a new set of node operators for each coSNARK job to decrease waiting times.
+ We do not recommend to use the same node operators over a longer period of time.
+ But you may **cache** them temporarily if you're planning to submit additional proofs soon after. Just be aware that **node operators can go offline** β if a cached key is stale, your request will fail at scheduling time.
+ > π‘ If you're submitting multiple proofs at once, you can reuse the same set of node operators across jobs. This reduces the number of HTTP calls and enables you to encrypt in parallel.
2) **Schedule a coSNARK Job on the TACEO:Proof Network**
To schedule a job you must provide the unique identifier of the blueprint that you want to use.
- In the client, the private inputs (Extended Witness or Inputs to Witness Extension, depends on the job type) get secret-shared and encrypted using the Node Providers' public keys (encryption keys).
+ In the client, the private inputs (Extended Witness or Inputs to Witness Extension, depends on the job type) get secret-shared and encrypted using the node operators' public keys (encryption keys).
The client then schedules the coSNARK job and uploads the encrypted shares to **TACEO:Proof** where the job gets send to nodes that compute the proof with Multi-Party Computation (MPC).
In response you receive a unique identifier for this job.
All of this is handled by the client libraries, you just need to call the provided functions.
@@ -56,7 +56,7 @@ Clients submit encrypted input shares and a short-lived voucher, and receive bac
Using the received unique identifier, you can subscribe to receive the results of a coSNARK job via a WebSocket connection.
By calling the provided functions you can wait for the results without needed to do any manual polling.
- The returned results include the proofs which are signed by the Node Providers.
+ The returned results include the proofs which are signed by the node operators.
You can use the initially received verification keys to verify the signatures.
---
@@ -64,4 +64,3 @@ Clients submit encrypted input shares and a short-lived voucher, and receive bac
**Next:**
- [For Application Developers](../dev/quick-start-co-circom)
-- [For Node Providers](../ops/onboarding)
diff --git a/docusaurus.config.ts b/docusaurus.config.ts
index 017e1b6..0382dbb 100644
--- a/docusaurus.config.ts
+++ b/docusaurus.config.ts
@@ -35,7 +35,21 @@ const config: Config = {
}
],
- plugins: [require.resolve('docusaurus-lunr-search')],
+ plugins: [
+ require.resolve('docusaurus-lunr-search'),
+ [
+ require.resolve("@docusaurus/plugin-client-redirects"),
+ {
+ redirects: [
+ { from: "/docs/quick-start", to: "/docs/" },
+ { from: "/docs/resources/circom", to: "/docs/co-circom/" },
+ { from: "/docs/design/known-issues", to: "/docs/" },
+ { from: "/docs/design/roadmap", to: "/docs/" },
+ { from: "/docs/contact", to: "/docs/" },
+ ],
+ },
+ ],
+ ],
// Even if you don't use internationalization, you can use this field to set
// useful metadata like html lang. For example, if your site is Chinese, you
@@ -83,21 +97,9 @@ const config: Config = {
items: [
{
type: "docSidebar",
- sidebarId: "coSnarkSidebar",
+ sidebarId: "mainSidebar",
position: "left",
- label: "CoSNARKs",
- },
- {
- type: "docSidebar",
- sidebarId: "proofSidebar",
- position: "left",
- label: "TACEO:Proof",
- },
- {
- type: "docSidebar",
- sidebarId: "oprfSidebar",
- position: "left",
- label: "TACEO:OPRF",
+ label: "Documentation",
},
{
type: "search",
@@ -119,20 +121,24 @@ const config: Config = {
style: "dark",
links: [
{
- title: "Docs",
+ title: "Docs",
items: [
{
- label: "Collaborative SNARKs",
- to: "/docs/overview",
+ label: "TACEO Network",
+ to: "/docs/taceo-network/network",
},
{
- label: "TACEO:Proof",
- to: "/docs/taceo-proof/overview",
+ label: "Privacy Services",
+ to: "/docs/services/overview",
},
{
- label: "TACEO:OPRF",
- to: "/docs/taceo-oprf/overview",
+ label: "Developer Tools",
+ to: "/docs/overview",
},
+ // {
+ // label: "Infrastructure",
+ // to: "/docs/taceo-proof/ops/onboarding",
+ // },
],
},
{
@@ -143,12 +149,12 @@ const config: Config = {
href: "https://taceo.io/discord",
},
{
- label: "Twitter",
+ label: "X",
href: "https://twitter.com/taceo_io",
},
{
- label: "Telegram",
- href: "https://t.me/collaborativeSNARK",
+ label: "Linkedin",
+ href: "https://www.linkedin.com/company/taceoio/",
},
],
},
diff --git a/package-lock.json b/package-lock.json
index e5a35e0..469df3c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,7 @@
"@algolia/autocomplete-shared": "^1.19.2",
"@algolia/client-search": "^5.34.1",
"@docusaurus/core": "3.8.1",
+ "@docusaurus/plugin-client-redirects": "^3.8.1",
"@docusaurus/preset-classic": "3.8.1",
"@mdx-js/react": "^3.1.0",
"algoliasearch": "^5.34.1",
@@ -3513,6 +3514,30 @@
"react-dom": "*"
}
},
+ "node_modules/@docusaurus/plugin-client-redirects": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.8.1.tgz",
+ "integrity": "sha512-F+86R7PBn6VNgy/Ux8w3ZRypJGJEzksbejQKlbTC8u6uhBUhfdXWkDp6qdOisIoW0buY5nLqucvZt1zNJzhJhA==",
+ "license": "MIT",
+ "dependencies": {
+ "@docusaurus/core": "3.8.1",
+ "@docusaurus/logger": "3.8.1",
+ "@docusaurus/utils": "3.8.1",
+ "@docusaurus/utils-common": "3.8.1",
+ "@docusaurus/utils-validation": "3.8.1",
+ "eta": "^2.2.0",
+ "fs-extra": "^11.1.1",
+ "lodash": "^4.17.21",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/@docusaurus/plugin-content-blog": {
"version": "3.8.1",
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.8.1.tgz",
@@ -4646,15 +4671,15 @@
}
},
"node_modules/@types/express": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz",
- "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==",
+ "version": "4.17.25",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz",
+ "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==",
"license": "MIT",
"dependencies": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "^4.17.33",
"@types/qs": "*",
- "@types/serve-static": "*"
+ "@types/serve-static": "^1"
}
},
"node_modules/@types/express-serve-static-core": {
@@ -7988,39 +8013,39 @@
}
},
"node_modules/express": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
- "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "version": "4.22.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz",
+ "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==",
"license": "MIT",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.3",
- "content-disposition": "0.5.4",
+ "body-parser": "~1.20.3",
+ "content-disposition": "~0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.7.1",
- "cookie-signature": "1.0.6",
+ "cookie": "~0.7.1",
+ "cookie-signature": "~1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
"encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.3.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
+ "finalhandler": "~1.3.1",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.0",
"merge-descriptors": "1.0.3",
"methods": "~1.1.2",
- "on-finished": "2.4.1",
+ "on-finished": "~2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.12",
+ "path-to-regexp": "~0.1.12",
"proxy-addr": "~2.0.7",
- "qs": "6.13.0",
+ "qs": "~6.14.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
+ "send": "~0.19.0",
+ "serve-static": "~1.16.2",
"setprototypeof": "1.2.0",
- "statuses": "2.0.1",
+ "statuses": "~2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
@@ -8066,6 +8091,21 @@
"integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
"license": "MIT"
},
+ "node_modules/express/node_modules/qs": {
+ "version": "6.14.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz",
+ "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/express/node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
diff --git a/package.json b/package.json
index ff95d0e..db8bde2 100644
--- a/package.json
+++ b/package.json
@@ -19,6 +19,7 @@
"@algolia/autocomplete-shared": "^1.19.2",
"@algolia/client-search": "^5.34.1",
"@docusaurus/core": "3.8.1",
+ "@docusaurus/plugin-client-redirects": "^3.8.1",
"@docusaurus/preset-classic": "3.8.1",
"@mdx-js/react": "^3.1.0",
"algoliasearch": "^5.34.1",
diff --git a/sidebars.ts b/sidebars.ts
index 5b12429..0e209e9 100644
--- a/sidebars.ts
+++ b/sidebars.ts
@@ -11,176 +11,197 @@ import type { SidebarsConfig } from "@docusaurus/plugin-content-docs";
Create as many sidebars as you want.
*/
const sidebars: SidebarsConfig = {
- // By default, Docusaurus generates a sidebar from the docs folder structure
- // tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
-
- // But you can create a sidebar manually
- coSnarkSidebar: [
- "overview",
- "primer/mpc-primer",
- "primer/collabSNARKs-primer",
+ // Unified sidebar structure for all documentation
+ mainSidebar: [
+ "index",
{
type: "category",
- label: "Getting Started",
- items: [
- "getting-started/quick-start-co-circom",
- "getting-started/quick-start-co-noir",
- "getting-started/install",
- "getting-started/usage",
- ],
+ label: "TACEO Network",
+ link: { type: "doc", id: "taceo-network/index" },
+ items: ["taceo-network/network"],
},
{
type: "category",
- label: "coCircom",
- link: { type: "doc", id: "co-circom/co-circom" },
+ label: "TACEO Services",
+ link: { type: "doc", id: "services/overview" },
items: [
{
type: "category",
- label: "Command-Line Interface",
- link: { type: "doc", id: "co-circom/cli/cli" },
+ label: "TACEO:OPRF",
+ link: { type: "doc", id: "taceo-oprf/overview" },
items: [
- "co-circom/cli/split-input",
- "co-circom/cli/merge-input-shares",
- "co-circom/cli/split-witness",
- "co-circom/cli/generate-witness",
- "co-circom/cli/translate-witness",
- "co-circom/cli/generate-proof",
- "co-circom/cli/verify",
+ "taceo-oprf/concepts",
+ "taceo-oprf/use-cases",
+ "taceo-oprf/authorization",
+ {
+ type: "category",
+ label: "Getting Started",
+ items: ["taceo-oprf/quickstart", "taceo-oprf/quicklocal"],
+ },
+ {
+ type: "category",
+ label: "Development",
+ items: ["taceo-oprf/beta-oprf"],
+ },
+ "taceo-oprf/api",
],
},
{
type: "category",
- label: "Rust Library",
- link: { type: "doc", id: "co-circom/lib/lib" },
- items: ["co-circom/lib/example"],
+ label: "TACEO:Proof",
+ link: { type: "doc", id: "taceo-proof/overview" },
+ items: [
+ {
+ type: "category",
+ label: "Getting Started",
+ items: [
+ "taceo-proof/dev/quick-start-co-circom",
+ "taceo-proof/dev/quick-start-co-noir",
+ ],
+ },
+ "taceo-proof/dev/blueprints",
+ "taceo-proof/dev/bestpractice",
+ ],
},
],
},
{
type: "category",
- label: "coNoir",
- link: { type: "doc", id: "co-noir/co-noir" },
+ label: "Developer Tools",
+ link: { type: "doc", id: "overview" },
items: [
{
type: "category",
- label: "Command-Line Interface",
- link: { type: "doc", id: "co-noir/cli/cli" },
+ label: "Getting Started",
items: [
- "co-noir/cli/split-input",
- "co-noir/cli/merge-input-shares",
- "co-noir/cli/split-witness",
- "co-noir/cli/generate-witness",
- "co-noir/cli/translate-witness",
- "co-noir/cli/build-proving-key",
- "co-noir/cli/split-proving-key",
- "co-noir/cli/translate-proving-key",
- "co-noir/cli/generate-proof",
- "co-noir/cli/build-and-generate-proof",
- "co-noir/cli/create-vk",
- "co-noir/cli/verify",
- "co-noir/cli/download-crs",
+ "getting-started/install",
+ "getting-started/quick-start-co-circom",
+ "getting-started/quick-start-co-noir",
+ "getting-started/usage",
],
},
{
type: "category",
- label: "Rust Library",
- link: { type: "doc", id: "co-noir/lib/lib" },
- items: ["co-noir/lib/example"],
+ label: "Examples",
+ link: { type: "doc", id: "examples/examples" },
+ items: [
+ "examples/poseidon",
+ "examples/poseidon_noir",
+ "examples/kyc",
+ "examples/multiplier2",
+ ],
+ },
+ "network-config", // Network Configuration
+ {
+ type: "category",
+ label: "coCircom",
+ link: { type: "doc", id: "co-circom/co-circom" },
+ items: [
+ {
+ type: "category",
+ label: "Command-Line Interface",
+ link: { type: "doc", id: "co-circom/cli/cli" },
+ items: [
+ "co-circom/cli/split-input",
+ "co-circom/cli/merge-input-shares",
+ "co-circom/cli/split-witness",
+ "co-circom/cli/generate-witness",
+ "co-circom/cli/translate-witness",
+ "co-circom/cli/generate-proof",
+ "co-circom/cli/verify",
+ ],
+ },
+ {
+ type: "category",
+ label: "Rust Library",
+ link: { type: "doc", id: "co-circom/lib/lib" },
+ items: ["co-circom/lib/example"],
+ },
+ ],
+ },
+ {
+ type: "category",
+ label: "coNoir",
+ link: { type: "doc", id: "co-noir/co-noir" },
+ items: [
+ {
+ type: "category",
+ label: "Command-Line Interface",
+ link: { type: "doc", id: "co-noir/cli/cli" },
+ items: [
+ "co-noir/cli/split-input",
+ "co-noir/cli/merge-input-shares",
+ "co-noir/cli/split-witness",
+ "co-noir/cli/generate-witness",
+ "co-noir/cli/translate-witness",
+ "co-noir/cli/build-proving-key",
+ "co-noir/cli/split-proving-key",
+ "co-noir/cli/translate-proving-key",
+ "co-noir/cli/generate-proof",
+ "co-noir/cli/build-and-generate-proof",
+ "co-noir/cli/create-vk",
+ "co-noir/cli/verify",
+ "co-noir/cli/download-crs",
+ ],
+ },
+ {
+ type: "category",
+ label: "Rust Library",
+ link: { type: "doc", id: "co-noir/lib/lib" },
+ items: ["co-noir/lib/example"],
+ },
+ ],
},
],
},
- "network-config",
- {
- type: "category",
- label: "Examples",
- link: { type: "doc", id: "examples/examples" },
- items: [
- "examples/poseidon",
- "examples/poseidon_noir",
- "examples/kyc",
- "examples/multiplier2",
- ],
- },
- {
- type: "category",
- label: "Releases",
- items: ["releases/co-snarks-april", "releases/co-noir-feb", "releases/co-noir-nov"],
- },
// {
// type: "category",
- // label: "Design",
- // items: ["design/mpc-vm", "design/known-issues", "design/roadmap"],
+ // label: "Running Infrastructure",
+ // items: [
+ // "taceo-proof/ops/onboarding", // Running a Node
+ // "taceo-proof/ops/ops-scaling", // Node Requirements
+ // "taceo-proof/ops/security", // Node Operations
+ // ],
// },
{
type: "category",
- label: "Background Material",
+ label: "Learning Resources",
items: [
- "resources/circom",
+ "primer/collabSNARKs-primer",
"resources/mpc",
"resources/zkp",
- "resources/collsnarks",
- ],
- },
- {
- type: "category",
- label: "Use Cases",
- items: [
- "use-cases/defi",
- "use-cases/ai",
- "use-cases/data-ownership",
- "use-cases/gaming",
- ],
- },
- ],
- proofSidebar: [
- "taceo-proof/overview",
- {
- type: "category",
- label: "Building Applications",
- items: [
+ {
+ type: "doc",
+ id: "resources/collsnarks",
+ label: "coSNARKs Further Reading",
+ },
{
type: "category",
- label: "Getting Started",
+ label: "Use Cases",
items: [
- "taceo-proof/dev/quick-start-co-circom",
- "taceo-proof/dev/quick-start-co-noir",
+ "use-cases/defi",
+ "use-cases/ai",
+ "use-cases/data-ownership",
+ "use-cases/gaming",
],
},
- "taceo-proof/dev/blueprints",
- "taceo-proof/dev/bestpractice",
- ],
- },
- {
- type: "category",
- label: "Running Nodes",
- items: [
- "taceo-proof/ops/onboarding",
- "taceo-proof/ops/ops-scaling",
- "taceo-proof/ops/security",
- ],
- },
- ],
- oprfSidebar: [
- "taceo-oprf/overview",
- "taceo-oprf/concepts",
- "taceo-oprf/use-cases",
- "taceo-oprf/authorization",
- {
- type: "category",
- label: "Getting Started",
- items: [
- "taceo-oprf/quickstart",
- "taceo-oprf/quicklocal",
],
},
{
type: "category",
- label: "Development",
+ label: "Releases",
items: [
- "taceo-oprf/beta-oprf",
+ {
+ type: "category",
+ label: "coSNARK Releases",
+ items: [
+ "releases/co-snarks-april",
+ "releases/co-noir-feb",
+ "releases/co-noir-nov",
+ ],
+ },
],
},
- "taceo-oprf/api",
],
};
diff --git a/src/css/custom.css b/src/css/custom.css
index 916eb1f..a538160 100644
--- a/src/css/custom.css
+++ b/src/css/custom.css
@@ -178,6 +178,131 @@ html:not([data-theme="dark"]) .main-wrapper {
border-top-color: var(--ifm-color-emphasis-200);
}
+/* Path cards on index page - theme-aware tinted backgrounds */
+.path-card-network {
+ padding: 1rem;
+ border: 1px solid var(--ifm-color-primary);
+ border-radius: 8px;
+ background-color: rgba(5, 82, 90, 0.13);
+}
+
+[data-theme="dark"] .path-card-network {
+ background-color: rgba(26, 172, 152, 0.25);
+}
+
+.path-card-services {
+ padding: 1rem;
+ border: 1px solid var(--ifm-color-success);
+ border-radius: 8px;
+ background-color: rgba(40, 167, 69, 0.13);
+}
+
+[data-theme="dark"] .path-card-services {
+ background-color: rgba(40, 167, 69, 0.28);
+}
+
+.path-card-tools {
+ padding: 1rem;
+ border: 1px solid var(--ifm-color-warning);
+ border-radius: 8px;
+ background-color: rgba(255, 193, 7, 0.13);
+}
+
+[data-theme="dark"] .path-card-tools {
+ background-color: rgba(255, 193, 7, 0.25);
+}
+
+.info-card {
+ padding: 1rem 1.25rem;
+ border-radius: 8px;
+ background-color: rgba(31, 120, 180, 0.10);
+}
+
+[data-theme="dark"] .info-card {
+ background-color: rgba(31, 120, 180, 0.25);
+}
+
+.info-card p {
+ margin: 0 0 0.5rem 0;
+}
+
+.info-card ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.info-card ul li {
+ margin: 0.3rem 0;
+ padding-left: 0.9rem;
+ position: relative;
+}
+
+/* Service cards on services/overview page */
+.service-card-primary {
+ padding: 2rem;
+ border: 2px solid var(--ifm-color-primary);
+ border-radius: 12px;
+ background-color: rgba(5, 82, 90, 0.08);
+}
+
+[data-theme="dark"] .service-card-primary {
+ background-color: rgba(26, 172, 152, 0.18);
+}
+
+.service-card-success {
+ padding: 2rem;
+ border: 2px solid var(--ifm-color-success);
+ border-radius: 12px;
+ background-color: rgba(40, 167, 69, 0.08);
+}
+
+[data-theme="dark"] .service-card-success {
+ background-color: rgba(40, 167, 69, 0.20);
+}
+
+.service-card-muted {
+ padding: 2rem;
+ border: 1px solid var(--ifm-color-emphasis-400);
+ border-radius: 12px;
+ background-color: var(--ifm-color-emphasis-100);
+ opacity: 0.8;
+}
+
+.getting-started-box {
+ padding: 2rem;
+ border-radius: 8px;
+ margin-top: 2rem;
+ background-color: rgba(31, 120, 180, 0.10);
+}
+
+[data-theme="dark"] .getting-started-box {
+ background-color: rgba(31, 120, 180, 0.25);
+}
+
+.getting-started-box .button-row {
+ margin-top: 1rem;
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+}
+
+.get-in-touch-btn {
+ display: inline-flex !important;
+ align-items: center;
+ gap: 0.4rem;
+}
+
+.info-card ul li::before {
+ content: 'β';
+ position: absolute;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ opacity: 0.5;
+ font-size: 0.85em;
+}
+
/* External link arrows in navbar */
.navbar__item .navbar__link[href^="http"]:not([href*="docs.taceo.io"]) {
position: relative;
diff --git a/src/pages/index.module.css b/src/pages/index.module.css
index cbba649..0091ea8 100644
--- a/src/pages/index.module.css
+++ b/src/pages/index.module.css
@@ -3,7 +3,207 @@
* and scoped locally.
*/
-/* Network Section - Based on website's Network component */
+/* βββ Page wrapper βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */
+
+.page {
+ padding: 4rem 0 6rem;
+}
+
+/* βββ Hero ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */
+
+.hero {
+ text-align: center;
+ margin-bottom: 4rem;
+ padding-bottom: 3rem;
+ border-bottom: 0.5px solid var(--ifm-color-emphasis-300);
+}
+
+.heroTitle {
+ font-size: 3.5rem !important;
+ font-weight: 100 !important;
+ line-height: 1.15 !important;
+ margin-bottom: 1.2rem !important;
+ letter-spacing: -0.01em;
+}
+
+.heroSubtitle {
+ font-size: 1.3rem !important;
+ font-weight: 300 !important;
+ color: var(--ifm-color-emphasis-700) !important;
+ margin-bottom: 0.6rem !important;
+ line-height: 1.5 !important;
+}
+
+.heroTagline {
+ font-size: 1rem !important;
+ font-weight: 400 !important;
+ color: var(--ifm-color-emphasis-600) !important;
+ margin-bottom: 2.5rem !important;
+ line-height: 1.6 !important;
+}
+
+.heroLinks {
+ display: flex;
+ gap: 2.5rem;
+ justify-content: center;
+ flex-wrap: wrap;
+}
+
+.heroLink {
+ position: relative;
+ font-size: 1.1rem !important;
+ font-weight: 400 !important;
+ text-decoration: none !important;
+ padding: 0.4rem 0;
+ display: inline-block;
+ color: inherit !important;
+}
+
+.heroLink::after {
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 0.5px;
+ bottom: 0;
+ left: 0;
+ background-color: currentColor;
+ transition: height 0.2s ease;
+}
+
+.heroLink:hover {
+ text-decoration: none !important;
+}
+
+.heroLink:hover::after {
+ height: 1.5px;
+}
+
+.heroLinkPrimary {
+ color: #52ffc5 !important;
+}
+
+.heroLinkPrimary::after {
+ background-color: #52ffc5;
+}
+
+/* βββ Section titles ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */
+
+.sectionTitle {
+ font-size: 1.8rem !important;
+ font-weight: 100 !important;
+ text-align: center;
+ margin-bottom: 2.5rem !important;
+ letter-spacing: -0.01em;
+}
+
+/* βββ Journey cards βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */
+
+.journeyGrid {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 1.5rem;
+ max-width: 1100px;
+ margin: 0 auto 4rem;
+}
+
+.journeyCard {
+ border: 0.5px solid var(--ifm-color-emphasis-400);
+ padding: 2rem 1.8rem;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ transition: border-color 0.2s ease;
+}
+
+.journeyCard:hover {
+ border-color: var(--ifm-color-emphasis-700);
+}
+
+.journeyStatus {
+ font-size: 0.9rem !important;
+ color: #05525a !important;
+ font-weight: 400;
+ margin-bottom: 0.8rem;
+ letter-spacing: 0.03em;
+ text-transform: uppercase;
+}
+[data-theme="dark"] .journeyStatus {
+ color: #52ffc5 !important;
+}
+
+.journeyCardTitle {
+ font-size: 1.3rem !important;
+ font-weight: 300 !important;
+ line-height: 1.4 !important;
+ margin-bottom: 1rem !important;
+}
+
+.journeyCardDesc {
+ font-size: 0.95rem !important;
+ font-weight: 400 !important;
+ line-height: 1.6 !important;
+ color: var(--ifm-color-emphasis-700) !important;
+ margin-bottom: 1.5rem !important;
+}
+
+/* βββ Quick links ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */
+
+.quickLinksSection {
+ padding-bottom: 3rem;
+ border-bottom: 0.5px solid var(--ifm-color-emphasis-300);
+ margin-bottom: 3rem;
+}
+
+.quickLinksGrid {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 1.5rem;
+ max-width: 800px;
+ margin: 0 auto;
+}
+
+.quickLinkCard {
+ border: 0.5px solid var(--ifm-color-emphasis-400);
+ padding: 1.5rem 1.2rem;
+ text-align: center;
+}
+
+.quickLinkTitle {
+ font-size: 0.85rem !important;
+ font-weight: 400 !important;
+ letter-spacing: 0.06em;
+ text-transform: uppercase;
+ color: var(--ifm-color-emphasis-600) !important;
+ margin-bottom: 1rem !important;
+}
+
+.quickLinkList {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+}
+
+/* βββ CTA ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ */
+
+.cta {
+ text-align: center;
+}
+
+.ctaTitle {
+ font-size: 1.5rem !important;
+ font-weight: 100 !important;
+ margin-bottom: 2rem !important;
+ letter-spacing: -0.01em;
+}
+
+.ctaLinks {
+ display: flex;
+ gap: 3rem;
+ justify-content: center;
+ flex-wrap: wrap;
+}
+
+/* βββ Network card section (legacy classes kept for reference) ββββββββββββββββ */
.network {
position: relative;
z-index: 1;
@@ -117,23 +317,23 @@
.networkLink {
position: relative;
- color: var(--taceo-background) !important;
+ color: inherit !important;
font-weight: 400 !important;
- font-size: 1.1rem !important;
+ font-size: 1rem !important;
text-decoration: none !important;
- padding: 0.5rem 0;
+ padding: 0.4rem 0;
display: inline-block;
}
.networkLink::after {
- content: '';
+ content: "";
position: absolute;
width: 100%;
- height: 0.5px;
+ height: 1px;
bottom: 0;
left: 0;
- background-color: #000000;
- transition: all 0.2s ease;
+ background-color: currentColor;
+ transition: height 0.2s ease;
}
.networkLink:hover {
@@ -141,36 +341,35 @@
}
.networkLink:hover::after {
- background-color: #000000;
- height: 1px;
+ height: 2px;
}
/* Dark mode overrides */
-[data-theme='dark'] .network {
+[data-theme="dark"] .network {
background-color: var(--ifm-background-color);
}
-[data-theme='dark'] .networkCardInner {
+[data-theme="dark"] .networkCardInner {
border: 1px solid #f1f0ec;
}
-[data-theme='dark'] .networkTitle,
-[data-theme='dark'] .networkDescription,
-[data-theme='dark'] .networkCardTitle,
-[data-theme='dark'] .networkCardDescription,
-[data-theme='dark'] .networkLink {
+[data-theme="dark"] .networkTitle,
+[data-theme="dark"] .networkDescription,
+[data-theme="dark"] .networkCardTitle,
+[data-theme="dark"] .networkCardDescription,
+[data-theme="dark"] .networkLink {
color: #f1f0ec !important;
}
-[data-theme='dark'] .networkStatus {
+[data-theme="dark"] .networkStatus {
color: var(--ifm-color-primary) !important;
}
-[data-theme='dark'] .networkLink::after {
+[data-theme="dark"] .networkLink::after {
background-color: #f1f0ec;
}
-[data-theme='dark'] .networkLink:hover::after {
+[data-theme="dark"] .networkLink:hover::after {
background-color: #f1f0ec;
}
@@ -187,34 +386,17 @@
font-size: 2.8rem !important;
line-height: 3.2rem !important;
}
-
- .networkGrid {
- grid-template-columns: 1fr;
- gap: 2rem;
- padding: 0 1rem;
- }
-}
-@media screen and (max-width: 996px) and (min-width: 769px) {
- .networkCardInner {
- grid-template-columns: auto 1fr;
- gap: 1rem;
+ .heroTitle {
+ font-size: 2.6rem !important;
}
-
- .networkIcon {
- grid-column: 1;
- display: flex;
- align-items: flex-start;
- padding-top: 1rem;
- width: 3rem;
- }
-
- .networkContent {
- grid-column: 2;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- height: 100%;
+
+ .networkGrid,
+ .journeyGrid,
+ .quickLinksGrid {
+ grid-template-columns: 1fr !important;
+ gap: 1.5rem;
+ padding: 0 1rem;
}
}
@@ -223,19 +405,31 @@
font-size: 2.2rem !important;
line-height: 2.6rem !important;
}
-
- .networkGrid {
+
+ .heroTitle {
+ font-size: 2rem !important;
+ }
+
+ .heroLinks,
+ .ctaLinks {
gap: 1.5rem;
- padding: 0 1rem;
}
-
+
+ .networkGrid,
+ .journeyGrid,
+ .quickLinksGrid {
+ grid-template-columns: 1fr !important;
+ gap: 1.2rem;
+ padding: 0;
+ }
+
.networkCardInner {
grid-template-columns: auto 1fr;
text-align: left;
padding: 1.2rem 1rem;
gap: 1rem;
}
-
+
.networkIcon {
grid-column: 1;
display: flex;
@@ -243,7 +437,7 @@
padding-top: 1rem;
width: 3rem;
}
-
+
.networkContent {
grid-column: 2;
display: flex;
@@ -251,4 +445,4 @@
justify-content: space-between;
height: 100%;
}
-}
\ No newline at end of file
+}
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index 2fcb50d..598d4b1 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -4,75 +4,106 @@ import Layout from '@theme/Layout';
import styles from './index.module.css';
-function NetworkTools() {
- const tools = [
- {
- title: "CoSNARKs for Circom and Noir",
- status: "Status: coCircom feature complete, coNoir in active development",
- description: "Developer tooling to run circom and Noir circuits in an MPC environment.",
- link: "/docs/overview",
- linkText: "Get started",
- highlight: true,
- },
- {
- title: "TACEO:Proof Private Proof Network",
- status: "Status: Live in production and ready for use",
- description: "CoSNARK network to outsource proof generation while maintaining privacy.",
- link: "/docs/taceo-proof/overview",
- linkText: "Learn more",
- highlight: true,
- },
- {
- title: "TACEO:OPRF Oblivious Pseudorandom Function",
- status: "Status: In beta",
- description: "Privacy-preserving pseudorandom function for nullifiers and more.",
- link: "/docs/taceo-oprf/overview",
- linkText: "Explore",
- highlight: true,
- },
- ];
-
+function GuidanceSection() {
return (
-
+
-
- Documentation & Tools
-
-
- We're building an encrypted compute layer for private shared state via the TACEO Network.
- Here you'll find documentation pertaining to the tools and services currently available.
-
-
- {tools.map((tool, idx) => (
-
-
-
-
-
-
-
-
- {tool.status}
-
-
- {tool.description}
-
-
-
- {tool.linkText}
-
-
-
+ {/* ββ Hero ββ */}
+
+
TACEO Network
+
Private execution layer for digital rails.
+
+ The TACEO Network and services enable computation over sensitive data without exposing inputs.
+
+
+
+ Browse Documentation
+
+
+
+
+ {/* ββ Journey cards ββ */}
+
What do you want to accomplish?
+
+
+
+
+
Learn the fundamentals
+
I want to understand TACEO Network
+
+ Understand how distributed privacy-preserving computation works and why it matters.
+
+
+ Explore Network
+
+
+
+
+
Production ready
+
I want to add privacy services to my app
+
+ Integrate TACEO:OPRF for privacy-preserving nullifiers or TACEO:Proof for private proof delegation.
+
+
+ Browse Services
+
+
+
+
+
Developer tools
+
I want to experiment with CoSNARKs
+
+ Build collaborative zero-knowledge circuits using Co-Circom and Co-Noir tooling.
+
+
+ Start Building
+
+
+
+ {/* ββ Quick Links ββ */}
+
+
Quick Links
+
+
+
New to Privacy Tech?
+
+ Secure Multiparty Computation
+ CoSNARKs Primer
+