diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..2f40341
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Espresso Systems
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
index 890e68b..74dc824 100644
--- a/README.md
+++ b/README.md
@@ -103,4 +103,4 @@ It requires installation of `KeyDB` or `Redis`.
## License
### Copyright
**(c) 2024 Espresso Systems**.
-`Push-CDN` was developed by Espresso Systems. While we plan to adopt an open source license, we have not yet selected one. As such, all rights are reserved for the time being. Please reach out to us if you have thoughts on licensing.
+`Push-CDN` was developed by Espresso Systems.
diff --git a/cdn-broker/benches/broadcast.rs b/cdn-broker/benches/broadcast.rs
index bc9e191..3222a6b 100644
--- a/cdn-broker/benches/broadcast.rs
+++ b/cdn-broker/benches/broadcast.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! Benchmarks for allocating and sending broadcast messages.
//! If run with `--profile-time=N seconds`, it will output a flamegraph.
diff --git a/cdn-broker/benches/direct.rs b/cdn-broker/benches/direct.rs
index 184e1fd..b590504 100644
--- a/cdn-broker/benches/direct.rs
+++ b/cdn-broker/benches/direct.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! Benchmarks for allocating and sending direct messages.
//! If run with `--profile-time=N seconds`, it will output a flamegraph.
diff --git a/cdn-broker/src/binaries/bad-broker.rs b/cdn-broker/src/binaries/bad-broker.rs
index 2be2568..2ff9f4c 100644
--- a/cdn-broker/src/binaries/bad-broker.rs
+++ b/cdn-broker/src/binaries/bad-broker.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! `bad-broker` is a simple binary that starts a broker with a random key and
//! attempts to start a broker every 100ms. This is useful for testing the
//! broker's ability to handle multiple brokers connecting to it.
diff --git a/cdn-broker/src/binaries/broker.rs b/cdn-broker/src/binaries/broker.rs
index 9b5e0da..87c922a 100644
--- a/cdn-broker/src/binaries/broker.rs
+++ b/cdn-broker/src/binaries/broker.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! The following is the main `Broker` binary, which just instantiates and runs
//! a `Broker` object.
use cdn_broker::{Broker, Config};
diff --git a/cdn-broker/src/connections/broadcast/mod.rs b/cdn-broker/src/connections/broadcast/mod.rs
index c1ab26d..863208a 100644
--- a/cdn-broker/src/connections/broadcast/mod.rs
+++ b/cdn-broker/src/connections/broadcast/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This is where we define routing for broadcast messages.
mod relational_map;
diff --git a/cdn-broker/src/connections/broadcast/relational_map.rs b/cdn-broker/src/connections/broadcast/relational_map.rs
index 8dea57a..433744c 100644
--- a/cdn-broker/src/connections/broadcast/relational_map.rs
+++ b/cdn-broker/src/connections/broadcast/relational_map.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use std::{
collections::{HashMap, HashSet},
hash::Hash,
diff --git a/cdn-broker/src/connections/direct/mod.rs b/cdn-broker/src/connections/direct/mod.rs
index fdfbacb..4a4acf0 100644
--- a/cdn-broker/src/connections/direct/mod.rs
+++ b/cdn-broker/src/connections/direct/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This is where we define routing for direct messages.
use cdn_proto::{connection::UserPublicKey, discovery::BrokerIdentifier};
diff --git a/cdn-broker/src/connections/mod.rs b/cdn-broker/src/connections/mod.rs
index d7997b5..b4c4cf3 100644
--- a/cdn-broker/src/connections/mod.rs
+++ b/cdn-broker/src/connections/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This module defines almost all of the connection lookup, addition,
//! and removal process.
diff --git a/cdn-broker/src/connections/versioned_map.rs b/cdn-broker/src/connections/versioned_map.rs
index e6cd122..4649d1c 100644
--- a/cdn-broker/src/connections/versioned_map.rs
+++ b/cdn-broker/src/connections/versioned_map.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This map defines our implementation of a map for making use
//! of versioned vectors. This lets us become eventually consistent
//! over connected user data.
diff --git a/cdn-broker/src/lib.rs b/cdn-broker/src/lib.rs
index 51c9722..51a76dd 100644
--- a/cdn-broker/src/lib.rs
+++ b/cdn-broker/src/lib.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This file contains the implementation of the `Broker`, which routes messages
//! for the Push CDN.
diff --git a/cdn-broker/src/metrics.rs b/cdn-broker/src/metrics.rs
index 4fdc327..0a76105 100644
--- a/cdn-broker/src/metrics.rs
+++ b/cdn-broker/src/metrics.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! Here is where we define broker-specific metrics that we need.
//! They are lazily loaded during runtime.
diff --git a/cdn-broker/src/reexports.rs b/cdn-broker/src/reexports.rs
index 120bd97..fff716c 100644
--- a/cdn-broker/src/reexports.rs
+++ b/cdn-broker/src/reexports.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This module defines re-exports that the broker uses and that
//! a downstream user may want to use.
diff --git a/cdn-broker/src/tasks/broker/handler.rs b/cdn-broker/src/tasks/broker/handler.rs
index c0fa31b..e57d8cd 100644
--- a/cdn-broker/src/tasks/broker/handler.rs
+++ b/cdn-broker/src/tasks/broker/handler.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This file defines the broker connection handler.
use std::{sync::Arc, time::Duration};
diff --git a/cdn-broker/src/tasks/broker/heartbeat.rs b/cdn-broker/src/tasks/broker/heartbeat.rs
index 2e80c17..41f9ec3 100644
--- a/cdn-broker/src/tasks/broker/heartbeat.rs
+++ b/cdn-broker/src/tasks/broker/heartbeat.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! The heartbeat task periodically posts our state to either Redis or an embeddable file DB.
use std::{collections::HashSet, sync::Arc, time::Duration};
diff --git a/cdn-broker/src/tasks/broker/listener.rs b/cdn-broker/src/tasks/broker/listener.rs
index 367bbd7..46ec09a 100644
--- a/cdn-broker/src/tasks/broker/listener.rs
+++ b/cdn-broker/src/tasks/broker/listener.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! The broker listener task listens and handles connections from new brokers.
use std::sync::Arc;
diff --git a/cdn-broker/src/tasks/broker/mod.rs b/cdn-broker/src/tasks/broker/mod.rs
index cb0e0fa..8c79717 100644
--- a/cdn-broker/src/tasks/broker/mod.rs
+++ b/cdn-broker/src/tasks/broker/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
pub mod handler;
pub mod heartbeat;
pub mod listener;
diff --git a/cdn-broker/src/tasks/broker/sender.rs b/cdn-broker/src/tasks/broker/sender.rs
index 9f11faa..bbb7de8 100644
--- a/cdn-broker/src/tasks/broker/sender.rs
+++ b/cdn-broker/src/tasks/broker/sender.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use std::sync::Arc;
use cdn_proto::{connection::Bytes, def::RunDef, discovery::BrokerIdentifier};
diff --git a/cdn-broker/src/tasks/broker/sync.rs b/cdn-broker/src/tasks/broker/sync.rs
index 4cf87d4..10edfc2 100644
--- a/cdn-broker/src/tasks/broker/sync.rs
+++ b/cdn-broker/src/tasks/broker/sync.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! The sync task syncs both users and topics to other brokers.
use std::{sync::Arc, time::Duration};
diff --git a/cdn-broker/src/tasks/mod.rs b/cdn-broker/src/tasks/mod.rs
index f682bfe..534b2ac 100644
--- a/cdn-broker/src/tasks/mod.rs
+++ b/cdn-broker/src/tasks/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This file defines the different types of tasks we have implemented
//! for `Arc>`.
diff --git a/cdn-broker/src/tasks/user/handler.rs b/cdn-broker/src/tasks/user/handler.rs
index 78ab026..961441a 100644
--- a/cdn-broker/src/tasks/user/handler.rs
+++ b/cdn-broker/src/tasks/user/handler.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This file defines the user handler module, wherein we define connection handlers for
//! `Arc`.
diff --git a/cdn-broker/src/tasks/user/listener.rs b/cdn-broker/src/tasks/user/listener.rs
index 3ea7028..7b4cd31 100644
--- a/cdn-broker/src/tasks/user/listener.rs
+++ b/cdn-broker/src/tasks/user/listener.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! The user listener tasks listens and deals with user connections.
use std::sync::Arc;
diff --git a/cdn-broker/src/tasks/user/mod.rs b/cdn-broker/src/tasks/user/mod.rs
index 858c8e0..eaf8ce0 100644
--- a/cdn-broker/src/tasks/user/mod.rs
+++ b/cdn-broker/src/tasks/user/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
pub mod handler;
pub mod listener;
pub mod sender;
diff --git a/cdn-broker/src/tasks/user/sender.rs b/cdn-broker/src/tasks/user/sender.rs
index 7fd2058..c701f38 100644
--- a/cdn-broker/src/tasks/user/sender.rs
+++ b/cdn-broker/src/tasks/user/sender.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use std::sync::Arc;
use cdn_proto::connection::UserPublicKey;
diff --git a/cdn-broker/src/tests/broadcast.rs b/cdn-broker/src/tests/broadcast.rs
index c044528..4dcede1 100644
--- a/cdn-broker/src/tests/broadcast.rs
+++ b/cdn-broker/src/tests/broadcast.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! Deterministic tests for sending and receiving broadcast messages.
//! Asserts they all go to the right place.
diff --git a/cdn-broker/src/tests/direct.rs b/cdn-broker/src/tests/direct.rs
index 9c74653..f5043b6 100644
--- a/cdn-broker/src/tests/direct.rs
+++ b/cdn-broker/src/tests/direct.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! Deterministic tests for sending and receiving direct messages.
//! Asserts they all go to the right place.
diff --git a/cdn-broker/src/tests/mod.rs b/cdn-broker/src/tests/mod.rs
index 02a168a..5dbfcdf 100644
--- a/cdn-broker/src/tests/mod.rs
+++ b/cdn-broker/src/tests/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! Commonalities for deterministic (non-networked) testing of our broker.
//! This is not guarded by `![cfg(test)]` because we use the same functions
//! when running benchmarks.
diff --git a/cdn-client/src/binaries/bad-connector.rs b/cdn-client/src/binaries/bad-connector.rs
index dec7230..c2f4259 100644
--- a/cdn-client/src/binaries/bad-connector.rs
+++ b/cdn-client/src/binaries/bad-connector.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! "Bad connector" is a simple example of a client that connects to the broker every
//! 200ms. This is useful for testing the broker's ability to handle many connections.
diff --git a/cdn-client/src/binaries/bad-sender.rs b/cdn-client/src/binaries/bad-sender.rs
index bd9bd55..69a48be 100644
--- a/cdn-client/src/binaries/bad-sender.rs
+++ b/cdn-client/src/binaries/bad-sender.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! "Bad sender" is a simple example of a client that continuously sends a message to itself.
//! This is useful for testing the broker's ability to handle many messages.
diff --git a/cdn-client/src/binaries/client.rs b/cdn-client/src/binaries/client.rs
index c5fb4c0..12f9924 100644
--- a/cdn-client/src/binaries/client.rs
+++ b/cdn-client/src/binaries/client.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! The following is an example of a Push CDN client implementation.
//! In this example, we send messages to ourselves via broadcast and direct
//! systems.
diff --git a/cdn-client/src/lib.rs b/cdn-client/src/lib.rs
index 1c7374d..7703bfc 100644
--- a/cdn-client/src/lib.rs
+++ b/cdn-client/src/lib.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! In here we define an API that is a little more higher-level and ergonomic
//! for end users. It is a light wrapper on top of a `Retry` connection.
diff --git a/cdn-client/src/reexports.rs b/cdn-client/src/reexports.rs
index bbb4f01..61105fa 100644
--- a/cdn-client/src/reexports.rs
+++ b/cdn-client/src/reexports.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This module defines re-exports that the client uses and that
//! a downstream user may want to use.
diff --git a/cdn-client/src/retry.rs b/cdn-client/src/retry.rs
index 051d446..ff706ea 100644
--- a/cdn-client/src/retry.rs
+++ b/cdn-client/src/retry.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This file provides a `Retry` connection, which allows for reconnections
//! on top of a normal connection.
//!
diff --git a/cdn-marshal/src/binaries/marshal.rs b/cdn-marshal/src/binaries/marshal.rs
index 34c8c0a..ba2923c 100644
--- a/cdn-marshal/src/binaries/marshal.rs
+++ b/cdn-marshal/src/binaries/marshal.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! The following is the main `Marshal` binary, which just instantiates and runs
//! a `Marshal` object.
diff --git a/cdn-marshal/src/handlers.rs b/cdn-marshal/src/handlers.rs
index 6408cea..8499b20 100644
--- a/cdn-marshal/src/handlers.rs
+++ b/cdn-marshal/src/handlers.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use std::time::Duration;
use cdn_proto::{
diff --git a/cdn-marshal/src/lib.rs b/cdn-marshal/src/lib.rs
index febdcc7..e0251fe 100644
--- a/cdn-marshal/src/lib.rs
+++ b/cdn-marshal/src/lib.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This file contains the implementation of the `Marshal`, which the user
//! connects to before a broker. It is used to "marshal" a user to the broker
//! (right now) with the least amount of connections. It's basically a load
diff --git a/cdn-proto/benches/protocols.rs b/cdn-proto/benches/protocols.rs
index d8bcb2a..612a92e 100644
--- a/cdn-proto/benches/protocols.rs
+++ b/cdn-proto/benches/protocols.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! Benchmarks for network protocols [Quic/TCP]
use cdn_proto::{
diff --git a/cdn-proto/build.rs b/cdn-proto/build.rs
index cba875c..6c220d9 100644
--- a/cdn-proto/build.rs
+++ b/cdn-proto/build.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use std::{env, fs, path::Path};
use rcgen::{CertificateParams, IsCa, KeyPair, PKCS_ECDSA_P256_SHA256};
diff --git a/cdn-proto/schema/messages_capnp.rs b/cdn-proto/schema/messages_capnp.rs
index c6322ec..151ec60 100644
--- a/cdn-proto/schema/messages_capnp.rs
+++ b/cdn-proto/schema/messages_capnp.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
// @generated by the capnpc-rust plugin to the Cap'n Proto schema compiler.
// DO NOT EDIT.
// source: cdn-proto/schema/messages.capnp
diff --git a/cdn-proto/src/connection/auth/broker.rs b/cdn-proto/src/connection/auth/broker.rs
index 5776558..5d4f6de 100644
--- a/cdn-proto/src/connection/auth/broker.rs
+++ b/cdn-proto/src/connection/auth/broker.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! In this crate we deal with the authentication flow as a broker.
use std::{
diff --git a/cdn-proto/src/connection/auth/marshal.rs b/cdn-proto/src/connection/auth/marshal.rs
index fb77bb0..c316ba5 100644
--- a/cdn-proto/src/connection/auth/marshal.rs
+++ b/cdn-proto/src/connection/auth/marshal.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! In this crate we deal with the authentication flow as a marshal.
use std::{
diff --git a/cdn-proto/src/connection/auth/mod.rs b/cdn-proto/src/connection/auth/mod.rs
index a5bcc8e..576caa1 100644
--- a/cdn-proto/src/connection/auth/mod.rs
+++ b/cdn-proto/src/connection/auth/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This file defines all authentication flows that the Push CDN implements.
pub mod broker;
diff --git a/cdn-proto/src/connection/auth/user.rs b/cdn-proto/src/connection/auth/user.rs
index a823440..248f4df 100644
--- a/cdn-proto/src/connection/auth/user.rs
+++ b/cdn-proto/src/connection/auth/user.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! In this crate we deal with the authentication flow as a user.
use std::{
diff --git a/cdn-proto/src/connection/metrics.rs b/cdn-proto/src/connection/metrics.rs
index cb4862e..382bae5 100644
--- a/cdn-proto/src/connection/metrics.rs
+++ b/cdn-proto/src/connection/metrics.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! Feature-gated connection specific metrics
use lazy_static::lazy_static;
diff --git a/cdn-proto/src/connection/middleware/mod.rs b/cdn-proto/src/connection/middleware/mod.rs
index 0e9632f..25112fe 100644
--- a/cdn-proto/src/connection/middleware/mod.rs
+++ b/cdn-proto/src/connection/middleware/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use pool::MemoryPool;
use self::pool::AllocationPermit;
diff --git a/cdn-proto/src/connection/middleware/pool.rs b/cdn-proto/src/connection/middleware/pool.rs
index e6e325d..cce0d98 100644
--- a/cdn-proto/src/connection/middleware/pool.rs
+++ b/cdn-proto/src/connection/middleware/pool.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! An asynchronous memory-Permitted `Arc`. Allows for atomic tracking for allocations and deallocations.
//!
//! Almost like a bounded channel, but has globally allocated counters of bytes instead of
diff --git a/cdn-proto/src/connection/mod.rs b/cdn-proto/src/connection/mod.rs
index 739f3ae..108498d 100644
--- a/cdn-proto/src/connection/mod.rs
+++ b/cdn-proto/src/connection/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! In this file we define network abstractions, which can be implemented
//! for any network protocol.
diff --git a/cdn-proto/src/connection/protocols/memory.rs b/cdn-proto/src/connection/protocols/memory.rs
index aec5109..6d52436 100644
--- a/cdn-proto/src/connection/protocols/memory.rs
+++ b/cdn-proto/src/connection/protocols/memory.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! The memory protocol is a completely in-memory channel-based protocol.
//! It can only be used intra-process.
diff --git a/cdn-proto/src/connection/protocols/mod.rs b/cdn-proto/src/connection/protocols/mod.rs
index e453660..6d73d4b 100644
--- a/cdn-proto/src/connection/protocols/mod.rs
+++ b/cdn-proto/src/connection/protocols/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This module defines connections, listeners, and their implementations.
use std::{sync::Arc, time::Duration};
diff --git a/cdn-proto/src/connection/protocols/quic.rs b/cdn-proto/src/connection/protocols/quic.rs
index e551425..ac310a6 100644
--- a/cdn-proto/src/connection/protocols/quic.rs
+++ b/cdn-proto/src/connection/protocols/quic.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This file defines and implements a thin wrapper around a QUIC
//! connection that implements our message framing and connection
//! logic.
diff --git a/cdn-proto/src/connection/protocols/tcp.rs b/cdn-proto/src/connection/protocols/tcp.rs
index 51a4363..2eab845 100644
--- a/cdn-proto/src/connection/protocols/tcp.rs
+++ b/cdn-proto/src/connection/protocols/tcp.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This file defines and implements a thin wrapper around a TCP
//! connection that implements our message framing and connection
//! logic.
diff --git a/cdn-proto/src/connection/protocols/tcp_tls.rs b/cdn-proto/src/connection/protocols/tcp_tls.rs
index 980071e..f50d52f 100644
--- a/cdn-proto/src/connection/protocols/tcp_tls.rs
+++ b/cdn-proto/src/connection/protocols/tcp_tls.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This file defines and implements a thin wrapper around a TCP
//! + TLS connection that implements our message framing and connection
//! logic.
diff --git a/cdn-proto/src/crypto/mod.rs b/cdn-proto/src/crypto/mod.rs
index ba458af..c59c21b 100644
--- a/cdn-proto/src/crypto/mod.rs
+++ b/cdn-proto/src/crypto/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! In this module we define cryptography primitives we may need, as
//! well as any serialization/deserialization functions on those primitives.
diff --git a/cdn-proto/src/crypto/rng.rs b/cdn-proto/src/crypto/rng.rs
index 42117fc..5401996 100644
--- a/cdn-proto/src/crypto/rng.rs
+++ b/cdn-proto/src/crypto/rng.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! In this module we define rng-related items.
use core::result::Result as StdResult;
diff --git a/cdn-proto/src/crypto/signature.rs b/cdn-proto/src/crypto/signature.rs
index b92ded8..650067c 100644
--- a/cdn-proto/src/crypto/signature.rs
+++ b/cdn-proto/src/crypto/signature.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! In this module we define the interface for signing and authenticating
//! with a marshal.
diff --git a/cdn-proto/src/crypto/tls.rs b/cdn-proto/src/crypto/tls.rs
index f9b4999..bfa704d 100644
--- a/cdn-proto/src/crypto/tls.rs
+++ b/cdn-proto/src/crypto/tls.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! In this module we define TLS-related items, such as an optional
//! way to skip server verification.
diff --git a/cdn-proto/src/def.rs b/cdn-proto/src/def.rs
index 316742c..949e8ce 100644
--- a/cdn-proto/src/def.rs
+++ b/cdn-proto/src/def.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! Compile-time run configuration for all CDN components.
use std::marker::PhantomData;
diff --git a/cdn-proto/src/discovery/embedded.rs b/cdn-proto/src/discovery/embedded.rs
index d2a681e..56691e0 100644
--- a/cdn-proto/src/discovery/embedded.rs
+++ b/cdn-proto/src/discovery/embedded.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use std::{
collections::HashSet,
ops::Deref,
diff --git a/cdn-proto/src/discovery/mod.rs b/cdn-proto/src/discovery/mod.rs
index 954a045..f35503f 100644
--- a/cdn-proto/src/discovery/mod.rs
+++ b/cdn-proto/src/discovery/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! In this module we describe the `DiscoveryClient` trait. It defines a client that allows
//! us to derive a source of truth for the number of brokers, permits issued, and the
//! number of users connected per broker.
diff --git a/cdn-proto/src/discovery/redis.rs b/cdn-proto/src/discovery/redis.rs
index 58287e6..c5e7344 100644
--- a/cdn-proto/src/discovery/redis.rs
+++ b/cdn-proto/src/discovery/redis.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This crate deals with `Redis` client abstractions. In the push CDN model,
//! the users of `Redis` and their uses are:
//! 1. Marshals and brokers to agree on the number of connections per broker
diff --git a/cdn-proto/src/error.rs b/cdn-proto/src/error.rs
index 433c3ab..4e101dc 100644
--- a/cdn-proto/src/error.rs
+++ b/cdn-proto/src/error.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This file defines common errors used by CDN clients and servers.
use core::result::Result as StdResult;
diff --git a/cdn-proto/src/lib.rs b/cdn-proto/src/lib.rs
index 87c13e4..da2b769 100644
--- a/cdn-proto/src/lib.rs
+++ b/cdn-proto/src/lib.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! This crate defines the common code structures and constants used by both the
//! broker client and server.
diff --git a/cdn-proto/src/message.rs b/cdn-proto/src/message.rs
index fd01dbb..80474c3 100644
--- a/cdn-proto/src/message.rs
+++ b/cdn-proto/src/message.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! The message serialization and deserialization layer. Used by all
//! messages sent to/from a broker or user.
//! TODO: clean up. Maybe use Cap'n'Proto messages directly.
diff --git a/cdn-proto/src/metrics.rs b/cdn-proto/src/metrics.rs
index 946b7cb..5085eab 100644
--- a/cdn-proto/src/metrics.rs
+++ b/cdn-proto/src/metrics.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
//! A simple metrics server that allows us to serve process metrics as-needed.
use std::{net::SocketAddr, time::Duration};
diff --git a/tests/src/lib.rs b/tests/src/lib.rs
index 87c2771..8110537 100644
--- a/tests/src/lib.rs
+++ b/tests/src/lib.rs
@@ -1,2 +1,8 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
#[cfg(test)]
mod tests;
diff --git a/tests/src/tests/basic_connect.rs b/tests/src/tests/basic_connect.rs
index 47cd83a..1ea919c 100644
--- a/tests/src/tests/basic_connect.rs
+++ b/tests/src/tests/basic_connect.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use std::time::Duration;
use cdn_proto::{
diff --git a/tests/src/tests/double_connect.rs b/tests/src/tests/double_connect.rs
index 4324d42..0a0596a 100644
--- a/tests/src/tests/double_connect.rs
+++ b/tests/src/tests/double_connect.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use std::time::Duration;
use cdn_proto::{def::TestTopic, discovery::BrokerIdentifier};
diff --git a/tests/src/tests/mod.rs b/tests/src/tests/mod.rs
index 77401a2..3928074 100644
--- a/tests/src/tests/mod.rs
+++ b/tests/src/tests/mod.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use cdn_broker::{Broker, Config as BrokerConfig};
use cdn_client::{Client, Config as ClientConfig};
use cdn_marshal::{Config as MarshalConfig, Marshal};
diff --git a/tests/src/tests/subscribe.rs b/tests/src/tests/subscribe.rs
index d1183ed..fd2949c 100644
--- a/tests/src/tests/subscribe.rs
+++ b/tests/src/tests/subscribe.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use std::time::Duration;
use cdn_proto::{
diff --git a/tests/src/tests/whitelist.rs b/tests/src/tests/whitelist.rs
index f400390..5ae7158 100644
--- a/tests/src/tests/whitelist.rs
+++ b/tests/src/tests/whitelist.rs
@@ -1,3 +1,9 @@
+// Copyright (c) 2024 Espresso Systems (espressosys.com)
+// This file is part of the Push-CDN repository.
+
+// You should have received a copy of the MIT License
+// along with the Push-CDN repository. If not, see .
+
use std::{sync::Arc, time::Duration};
use cdn_proto::{connection::UserPublicKey, def::TestTopic};