diff --git a/ipc/serde/Cargo.toml b/ipc/serde/Cargo.toml
new file mode 100644
index 000000000..1663526e7
--- /dev/null
+++ b/ipc/serde/Cargo.toml
@@ -0,0 +1,16 @@
+[package]
+name = "ethcore-bin-serde"
+version = "0.1.0"
+authors = ["Nikolay Volf"]
+build = "build.rs"
+
+[lib]
+
+[dependencies]
+bincode = "*"
+serde = "0.7.0"
+ethcore-devtools = { path = "../../devtools" }
+
+[build-dependencies]
+syntex = "*"
+serde_codegen = "0.7.0"
diff --git a/ipc/serde/build.rs b/ipc/serde/build.rs
new file mode 100644
index 000000000..9a147f446
--- /dev/null
+++ b/ipc/serde/build.rs
@@ -0,0 +1,30 @@
+// Copyright 2015, 2016 Ethcore (UK) Ltd.
+// This file is part of Parity.
+
+// Parity 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.
+
+// Parity 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 Parity. If not, see .
+
+extern crate syntex;
+extern crate serde_codegen;
+
+use std::env;
+use std::path::Path;
+
+pub fn main() {
+ let out_dir = env::var_os("OUT_DIR").unwrap();
+ let src = Path::new("src/lib.rs.in");
+ let dst = Path::new(&out_dir).join("lib.rs");
+ let mut registry = syntex::Registry::new();
+ serde_codegen::register(&mut registry);
+ registry.expand("", &src, &dst).unwrap();
+}
diff --git a/ipc/serde/src/lib.rs b/ipc/serde/src/lib.rs
new file mode 100644
index 000000000..af29c8f87
--- /dev/null
+++ b/ipc/serde/src/lib.rs
@@ -0,0 +1,17 @@
+// Copyright 2015, 2016 Ethcore (UK) Ltd.
+// This file is part of Parity.
+
+// Parity 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.
+
+// Parity 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 Parity. If not, see .
+
+include!(concat!(env!("OUT_DIR"), "/lib.rs"));
diff --git a/ipc/serde/src/lib.rs.in b/ipc/serde/src/lib.rs.in
new file mode 100644
index 000000000..4235e6e76
--- /dev/null
+++ b/ipc/serde/src/lib.rs.in
@@ -0,0 +1,18 @@
+// Copyright 2015, 2016 Ethcore (UK) Ltd.
+// This file is part of Parity.
+
+// Parity 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.
+
+// Parity 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 Parity. If not, see .
+
+#[derive(Serialize, Deserialize)]
+struct BinBox([u8; mem::size_of()]);