diff --git a/on-host/Cargo.toml b/on-host/Cargo.toml
index 6b93b1d545675c9d2c4d3ce414a041b479851057..7b00d38d72dbea63a4ebb164192707303a705360 100644
--- a/on-host/Cargo.toml
+++ b/on-host/Cargo.toml
@@ -19,11 +19,5 @@ git = "https://git.skywarder.eu/avn/swd/mavlink/mavlink-skyward-lib.git"
 branch = "main"
 features = ["serde", "lyra"]
 
-# [dependencies.tdl-core]
-# git = "ssh://git@git.skywarder.eu/federico.lolli/tdl.git"
-# branch = "main"
-# optional = true
-
 [features]
 default = []
-# tdl = ["dep:tdl-core"]
diff --git a/on-host/src/cli.rs b/on-host/src/cli.rs
index 53b8f94e1c3f63ade55296e0c26aae359180c2fc..9b4d071b4f10f51b651c3a1ee5e9d201f81e8d04 100644
--- a/on-host/src/cli.rs
+++ b/on-host/src/cli.rs
@@ -8,32 +8,6 @@ use clap::{
     Parser,
 };
 
-// #[cfg(feature = "tdl")]
-// #[derive(Debug, Parser)]
-// #[command(styles=get_styles())]
-// pub struct Cli {
-//     /// The mode to use
-//     #[clap(subcommand)]
-//     pub mode: ModeFile,
-
-//     /// The serial port to use
-//     #[clap(short, long, value_name = "PORT")]
-//     pub port: Option<String>,
-
-//     /// baud rate
-//     #[clap(short, long, default_value = "115200")]
-//     pub baud_rate: u32,
-
-//     /// disable SYNC MODE (wait for a sync signal from the device before proceding)
-//     #[clap(short, long)]
-//     pub no_sync: bool,
-
-//     /// The log level
-//     #[clap(short, long)]
-//     pub verbose: bool,
-// }
-
-// #[cfg(not(feature = "tdl"))]
 #[derive(Debug, Parser)]
 #[command(styles=get_styles())]
 pub struct Cli {
@@ -62,34 +36,6 @@ pub struct Cli {
     pub verbose: bool,
 }
 
-// #[cfg(feature = "tdl")]
-// #[derive(Debug, Parser)]
-// pub enum ModeFile {
-//     /// build mavlink packets from a TDL file
-//     Tdl {
-//         /// The TDL file to read from
-//         tdl_file: PathBuf,
-
-//         /// initial GPS latitude
-//         #[clap(short = 'n', long, value_name = "LAT")]
-//         lat: f64,
-
-//         /// initial GPS longitude
-//         #[clap(short = 'e', long, value_name = "LON")]
-//         lon: f64,
-
-//         /// initial GPS altitude
-//         #[clap(short = 'u', long, value_name = "ALT")]
-//         alt: f64,
-//     },
-
-//     /// parse mavlink packets from a CSV file
-//     Csv {
-//         /// The CSV file to read from
-//         csv_file: PathBuf,
-//     },
-// }
-
 pub fn get_styles() -> Styles {
     Styles::styled()
         .usage(
diff --git a/on-host/src/main.rs b/on-host/src/main.rs
index ce76fa676efdee0aeaca7648a12d0df1405e0dce..7d2255f3a3bc80ec6f25c087ed497d88399c5f8b 100644
--- a/on-host/src/main.rs
+++ b/on-host/src/main.rs
@@ -1,7 +1,5 @@
 mod cli;
 mod packet;
-// #[cfg(feature = "tdl")]
-// mod tdl;
 mod tm;
 mod utils;
 
@@ -22,8 +20,6 @@ use skyward_mavlink::{
 };
 use tm::{read_high_rate_telemetry, read_low_rate_telemetry};
 
-// #[cfg(feature = "tdl")]
-// use crate::cli::ModeFile;
 use crate::{
     cli::Cli,
     packet::PacketSequence,
@@ -108,28 +104,6 @@ fn main() -> Result<()> {
     Ok(())
 }
 
-// #[cfg(feature = "tdl")]
-// fn get_packets(args: &Cli) -> Result<Vec<MavMessage>> {
-//     let packets: Vec<MavMessage> = match &args.mode {
-//         ModeFile::Csv { csv_file } => {
-//             info!("reading from csv file {}", csv_file.display());
-//             read_packets_from_csv(File::open(csv_file).into_diagnostic()?).into_diagnostic()?
-//         }
-//         ModeFile::Tdl {
-//             tdl_file,
-//             lat,
-//             lon,
-//             alt,
-//         } => {
-//             info!("reading from tdl file {}", tdl_file.display());
-//             tdl::generate_packets_from_tdl(tdl_file, *lat, *lon, *alt)?
-//         }
-//     };
-//     debug!("collected {} packets", packets.len());
-//     Ok(packets)
-// }
-
-// #[cfg(not(feature = "tdl"))]
 fn get_packets(args: &Cli) -> Result<Vec<TimedMessage>> {
     info!(
         "reading low rate telemetry from file {}",
diff --git a/on-host/src/tdl.rs b/on-host/src/tdl.rs
deleted file mode 100644
index 77807b527a217c353745f6faf73b36f9bcd029cf..0000000000000000000000000000000000000000
--- a/on-host/src/tdl.rs
+++ /dev/null
@@ -1,198 +0,0 @@
-use std::{path::Path, time::Instant};
-
-use miette::{miette, Context, IntoDiagnostic, Result};
-use skyward_mavlink::lyra::{MavMessage, ROCKET_FLIGHT_TM_DATA};
-use tdl_core::{
-    semantics::{Executor, Point, Trajectory},
-    syntax::CachedLexer,
-};
-
-pub fn generate_packets_from_tdl(
-    tdl_file: impl AsRef<Path>,
-    gps_lat: f64,
-    gps_lon: f64,
-    gps_alt: f64,
-) -> Result<Vec<MavMessage>> {
-    let tdl_content = std::fs::read_to_string(tdl_file.as_ref())
-        .into_diagnostic()
-        .wrap_err("Failed to read TDL file")?;
-    let program = CachedLexer::new(&tdl_content)
-        .parse_program()
-        .wrap_err("Failed to parse TDL program")?;
-    let traj = Executor::new(program)
-        .run()
-        .or(Err(miette!("Failed to execute TDL program")))?;
-    let generator = RocketFlightGenerator::new(gps_lat, gps_lon, gps_alt);
-    generator.generate_packets(traj)
-}
-
-trait MessageGenerator {
-    fn generate_packets(self, traj: Trajectory) -> Result<Vec<MavMessage>>;
-}
-
-struct RocketFlightGenerator {
-    normalization: Option<u128>,
-    max_altitude: f64,
-    initial_gps: (f64, f64, f64),
-    last_time: Option<f64>,
-    last_pos: Option<(f64, f64, f64)>,
-    last_vel: Option<(f64, f64, f64)>,
-    last_acc: Option<(f64, f64, f64)>,
-    ada_flip: bool,
-}
-
-impl RocketFlightGenerator {
-    fn new(lat: f64, lon: f64, alt: f64) -> Self {
-        Self {
-            initial_gps: (lat, lon, alt),
-            normalization: None,
-            max_altitude: 0.0,
-            last_time: None,
-            last_pos: None,
-            last_vel: None,
-            last_acc: None,
-            ada_flip: false,
-        }
-    }
-
-    fn compute_velocity(&self, point: Point) -> Option<(f64, f64, f64)> {
-        if let Some((x, y, z)) = self.last_pos {
-            let dt = point.time - self.last_time?;
-            let dx = point.x - x;
-            let dy = point.y - y;
-            let dz = point.z - z;
-            Some((dx / dt, dy / dt, dz / dt))
-        } else {
-            None
-        }
-    }
-
-    fn compute_acceleration(
-        &self,
-        vel: Option<(f64, f64, f64)>,
-        time: f64,
-    ) -> Option<(f64, f64, f64)> {
-        let (vx, vy, vz) = vel?;
-        if let Some((lvx, lvy, lvz)) = self.last_vel {
-            let dt = time - self.last_time?;
-            let dvx = vx - lvx;
-            let dvy = vy - lvy;
-            let dvz = vz - lvz;
-            Some((dvx / dt, dvy / dt, dvz / dt))
-        } else {
-            None
-        }
-    }
-
-    fn consume_point(&mut self, point: Point) -> ROCKET_FLIGHT_TM_DATA {
-        let Point { x, y, z, time: t } = point;
-
-        // normalize time relative to now
-        let time = if let Some(offset) = self.normalization {
-            (t * 1e6).floor().min(u128::MAX as f64) as u128 + offset
-        } else {
-            let time_us = (t * 1e6).floor().min(u128::MAX as f64) as u128;
-            self.normalization = Some(Instant::now().elapsed().as_micros() - time_us);
-            0
-        };
-
-        // check for overflow
-        if time > u64::MAX as u128 {
-            panic!("Time overflow");
-        }
-
-        // calculate velocity and acceleration
-        let vel = self.compute_velocity(point);
-        let acc = self.compute_acceleration(vel, t).unwrap_or_default();
-        let vel = vel.unwrap_or_default();
-        // and save them
-        self.last_time = Some(t);
-        self.last_pos = Some((x, y, z));
-        self.last_vel = Some(vel);
-        self.last_acc = Some(acc);
-
-        // check for max altitude reached
-        if z >= self.max_altitude && !self.ada_flip {
-            self.max_altitude = z;
-        } else {
-            self.ada_flip = true;
-        }
-
-        // deconstruct the tuple
-        let (x, y, z) = (x as f32, y as f32, z as f32);
-        let (vx, vy, vz) = (vel.0 as f32, vel.1 as f32, vel.2 as f32);
-        let (ax, ay, az) = (acc.0 as f32, acc.1 as f32, acc.2 as f32);
-
-        let pin = if self.ada_flip { 1 } else { 0 };
-
-        let (lat, lon, alt) = self.initial_gps;
-        let (lat, lon, alt) = (lat as f32, lon as f32, alt as f32);
-
-        ROCKET_FLIGHT_TM_DATA {
-            timestamp: time as u64,
-            pressure_digi: 88400.0,
-            pressure_static: 88400.0,
-            airspeed_pitot: 10.0,
-            altitude_agl: z,
-            acc_x: ax,
-            acc_y: ay,
-            acc_z: az,
-            gyro_x: 0.0,
-            gyro_y: 0.0,
-            gyro_z: 0.0,
-            mag_x: 0.0,
-            mag_y: 0.0,
-            mag_z: 0.0,
-            gps_lat: lat,
-            gps_lon: lon,
-            gps_alt: alt,
-            nas_n: y,
-            nas_e: x,
-            nas_d: -z,
-            nas_vn: vy,
-            nas_ve: vx,
-            nas_vd: -vz,
-            nas_qx: 0.0,
-            nas_qy: 0.0,
-            nas_qz: 0.0,
-            nas_qw: 1.0,
-            nas_bias_x: 0.0,
-            nas_bias_y: 0.0,
-            nas_bias_z: 0.0,
-            battery_voltage: 8.0,
-            cam_battery_voltage: 8.0,
-            current_consumption: 0.0,
-            temperature: 40.0,
-            fmm_state: 0,
-            nas_state: 0,
-            gps_fix: 3,
-            pin_nosecone: pin,
-            cutter_presence: 0,
-            logger_error: 0,
-            pressure_ada: 0.0,
-            pressure_dpl: 0.0,
-            ada_vert_speed: 0.0,
-            mea_mass: 0.0,
-            abk_angle: 0.0,
-            pin_quick_connector: 0.0,
-            ada_state: 0,
-            dpl_state: 0,
-            abk_state: 0,
-            mea_state: 0,
-            pin_launch: 0,
-            pin_expulsion: 0,
-        }
-    }
-}
-
-impl MessageGenerator for RocketFlightGenerator {
-    fn generate_packets(mut self, traj: Trajectory) -> Result<Vec<MavMessage>> {
-        let Trajectory { points } = traj;
-        let mut packets = Vec::new();
-        for point in points {
-            let packet = self.consume_point(point);
-            packets.push(MavMessage::ROCKET_FLIGHT_TM(packet));
-        }
-        Ok(packets)
-    }
-}