diff --git a/src/components/projects_component.rs b/src/components/projects_component.rs
index 4204683..2a2e111 100644
--- a/src/components/projects_component.rs
+++ b/src/components/projects_component.rs
@@ -58,7 +58,7 @@ pub fn ProjectsComponent() -> impl IntoView {
title="Secure Embedded Controller"
tagline="A Secure end-to-end Rust-based EC implementation"
description="ODP EC provides a modern embedded controller firmware written in Rust. Designed for safety and composability, it serves as a foundational layer for secure device management."
- docs_href="https://opendevicepartnership.github.io/documentation/tracks/embedded_controller/track_overview.html"
+ docs_href="https://opendevicepartnership.github.io/odp-embedded-controller/secure-ec-overview.html"
docs_title="Read the Secure EC Documentation"
source_href="https://github.com/OpenDevicePartnership/embedded-services"
source_title="View Secure EC Source Code on GitHub"
@@ -70,7 +70,7 @@ pub fn ProjectsComponent() -> impl IntoView {
title="Unified Embedded Controller Services"
tagline="A standard and secure cross-architecture EC services implementation"
description="ODP EC Services provides a modern EC services firmware written in Rust. Designed for safety and composability, it serves as a foundational layer for secure EC services on Windows platforms."
- docs_href="https://opendevicepartnership.github.io/documentation/guide/intro/concepts/EC_Services.html"
+ docs_href="https://opendevicepartnership.github.io/odp-embedded-controller/specs/ec_interface/ec_interface.html"
docs_title="Read the EC Services Documentation"
source_href="https://github.com/OpenDevicePartnership/haf-ec-service"
source_title="View EC Services Source Code on GitHub"
diff --git a/src/data/projects.rs b/src/data/projects.rs
index 63ac237..8df90e9 100644
--- a/src/data/projects.rs
+++ b/src/data/projects.rs
@@ -45,7 +45,7 @@ pub const EMBEDDED_CONTROLLER: ProjectCopy = ProjectCopy {
It provides modular subsystems for power sequencing, thermal policy, event routing, and more.
Components are defined by traits, composed into devices, and managed by a shared runtime that drives platform behavior.
-Built for portability and testability, it supports both std and no-std builds and integrates cleanly with real-time runtimes like Embassy. Learn more about Secure EC on our GitHub repository and check out the Documentation page."#,
+Built for portability and testability, it supports both std and no-std builds and integrates cleanly with real-time runtimes like Embassy. Learn more about Secure EC on our GitHub repository and check out the Documentation page."#,
why: "Embedded Controllers do more than ever — yet many EC stacks are stuck in the past.
The ODP EC firmware rethinks the EC as a secure, modular orchestrator for power, telemetry, and system policy. With clearly scoped components and Rust’s safety guarantees, it helps you move faster, catch bugs earlier, and support diverse platforms with confidence.
It’s a modern foundation for building reliable, adaptable EC firmware — not just patching legacy code.",
@@ -64,7 +64,7 @@ pub const EC_SERVICES: ProjectCopy = ProjectCopy {
what: r#"The Unified Windows EC Service interface defines runtime coordination between firmware components using async message-passing.
Each service manages a domain — like power, battery, or host communication — and exposes a structured protocol.
Components register with services and receive commands for events, capabilities, and state changes.
- This model enables loosely coupled subsystems, observability, and test injection — without sacrificing platform coherence. Learn more about EC Services on our GitHub repository and check out the Documentation page."#,
+ This model enables loosely coupled subsystems, observability, and test injection — without sacrificing platform coherence. Learn more about EC Services on our GitHub repository and check out the Documentation page."#,
why: "Without a common interface, EC firmware becomes tangled and brittle.
Unified EC Services -- designed for Windows Platforms -- bring structure and predictability by defining how components interact at runtime.
With async protocols and policy-aware life cycles, they support clean separation of concerns and cross-subsystem coordination.