diff --git a/Cargo.lock b/Cargo.lock
index 58701cb1041f..3b718273cd3a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -14836,6 +14836,15 @@ dependencies = [
"tracing-gum",
]
+[[package]]
+name = "polkadot-omni-node"
+version = "0.1.0"
+dependencies = [
+ "color-eyre",
+ "polkadot-omni-node-lib",
+ "substrate-build-script-utils",
+]
+
[[package]]
name = "polkadot-omni-node-lib"
version = "0.1.0"
@@ -14942,7 +14951,6 @@ version = "4.0.0"
dependencies = [
"asset-hub-rococo-runtime",
"asset-hub-westend-runtime",
- "bp-messages",
"bridge-hub-rococo-runtime",
"bridge-hub-westend-runtime",
"collectives-westend-runtime",
@@ -14969,7 +14977,6 @@ dependencies = [
"sp-genesis-builder",
"staging-xcm",
"substrate-build-script-utils",
- "testnet-parachains-constants",
]
[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index fe0bc8eedc64..bd37dee51460 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -133,6 +133,7 @@ members = [
"cumulus/parachains/runtimes/test-utils",
"cumulus/parachains/runtimes/testing/penpal",
"cumulus/parachains/runtimes/testing/rococo-parachain",
+ "cumulus/polkadot-omni-node",
"cumulus/polkadot-omni-node/lib",
"cumulus/polkadot-parachain",
"cumulus/primitives/aura",
@@ -541,6 +542,7 @@ members = [
]
default-members = [
+ "cumulus/polkadot-omni-node",
"cumulus/polkadot-parachain",
"polkadot",
"substrate/bin/node/cli",
@@ -1052,6 +1054,7 @@ polkadot-node-subsystem = { path = "polkadot/node/subsystem", default-features =
polkadot-node-subsystem-test-helpers = { path = "polkadot/node/subsystem-test-helpers" }
polkadot-node-subsystem-types = { path = "polkadot/node/subsystem-types", default-features = false }
polkadot-node-subsystem-util = { path = "polkadot/node/subsystem-util", default-features = false }
+polkadot-omni-node = { path = "cumulus/polkadot-omni-node", default-features = false }
polkadot-omni-node-lib = { path = "cumulus/polkadot-omni-node/lib", default-features = false }
polkadot-overseer = { path = "polkadot/node/overseer", default-features = false }
polkadot-parachain-primitives = { path = "polkadot/parachain", default-features = false }
diff --git a/cumulus/polkadot-omni-node/Cargo.toml b/cumulus/polkadot-omni-node/Cargo.toml
new file mode 100644
index 000000000000..f11d7796d973
--- /dev/null
+++ b/cumulus/polkadot-omni-node/Cargo.toml
@@ -0,0 +1,29 @@
+[package]
+name = "polkadot-omni-node"
+version = "0.1.0"
+authors.workspace = true
+edition.workspace = true
+build = "build.rs"
+description = "Runs a polkadot parachain node"
+license = "Apache-2.0"
+
+[lints]
+workspace = true
+
+[dependencies]
+color-eyre = { workspace = true }
+
+# Local
+polkadot-omni-node-lib = { workspace = true }
+
+[build-dependencies]
+substrate-build-script-utils = { workspace = true, default-features = true }
+
+[features]
+default = []
+runtime-benchmarks = [
+ "polkadot-omni-node-lib/runtime-benchmarks",
+]
+try-runtime = [
+ "polkadot-omni-node-lib/try-runtime",
+]
diff --git a/cumulus/polkadot-omni-node/build.rs b/cumulus/polkadot-omni-node/build.rs
new file mode 100644
index 000000000000..8c498735eae9
--- /dev/null
+++ b/cumulus/polkadot-omni-node/build.rs
@@ -0,0 +1,22 @@
+// Copyright (C) Parity Technologies (UK) Ltd.
+// This file is part of Cumulus.
+
+// Cumulus is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Cumulus is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Cumulus. If not, see .
+
+use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed};
+
+fn main() {
+ generate_cargo_keys();
+ rerun_if_git_head_changed();
+}
diff --git a/cumulus/polkadot-omni-node/src/main.rs b/cumulus/polkadot-omni-node/src/main.rs
new file mode 100644
index 000000000000..9883d62dfe31
--- /dev/null
+++ b/cumulus/polkadot-omni-node/src/main.rs
@@ -0,0 +1,55 @@
+// Copyright (C) Parity Technologies (UK) Ltd.
+// This file is part of Cumulus.
+
+// Cumulus is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Cumulus is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Cumulus. If not, see .
+
+//! Polkadot parachain node.
+
+#![warn(missing_docs)]
+#![warn(unused_extern_crates)]
+
+use polkadot_omni_node_lib::{
+ chain_spec::DiskChainSpecLoader, run, runtime::DefaultRuntimeResolver, CliConfig as CliConfigT,
+ RunConfig,
+};
+
+struct CliConfig;
+
+impl CliConfigT for CliConfig {
+ fn impl_version() -> String {
+ env!("SUBSTRATE_CLI_IMPL_VERSION").into()
+ }
+
+ fn author() -> String {
+ env!("CARGO_PKG_AUTHORS").into()
+ }
+
+ fn support_url() -> String {
+ "https://github.com/paritytech/polkadot-sdk/issues/new".into()
+ }
+
+ fn copyright_start_year() -> u16 {
+ 2017
+ }
+}
+
+fn main() -> color_eyre::eyre::Result<()> {
+ color_eyre::install()?;
+
+ let config = RunConfig {
+ chain_spec_loader: Box::new(DiskChainSpecLoader),
+ runtime_resolver: Box::new(DefaultRuntimeResolver),
+ };
+ Ok(run::(config)?)
+}
diff --git a/cumulus/polkadot-parachain/Cargo.toml b/cumulus/polkadot-parachain/Cargo.toml
index f8f84273176d..426679ce0cd5 100644
--- a/cumulus/polkadot-parachain/Cargo.toml
+++ b/cumulus/polkadot-parachain/Cargo.toml
@@ -37,10 +37,6 @@ penpal-runtime = { workspace = true }
people-rococo-runtime = { workspace = true }
people-westend-runtime = { workspace = true }
parachains-common = { workspace = true, default-features = true }
-testnet-parachains-constants = { features = [
- "rococo",
- "westend",
-], workspace = true }
# Substrate
sp-core = { workspace = true, default-features = true }
@@ -55,9 +51,6 @@ xcm = { workspace = true, default-features = true }
# Cumulus
cumulus-primitives-core = { workspace = true, default-features = true }
-# Bridges
-bp-messages = { workspace = true, default-features = true }
-
[build-dependencies]
substrate-build-script-utils = { workspace = true, default-features = true }