diff --git a/Cargo.toml b/Cargo.toml
index 9ea6f4e8..3923b057 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -16,3 +16,42 @@ lto = true
 [profile.coverage]
 inherits = "test"
 lto = false
+
+[workspace.dependencies.tengri]
+git = "https://codeberg.org/unspeaker/tengri"
+rev = "d30eda33d1"
+features = [ "tui", "dsl" ]
+
+[workspace.dependencies]
+tek         = { path = "./app"     }
+tek_cli     = { path = "./cli"     }
+tek_jack    = { path = "./jack"    }
+tek_midi    = { path = "./midi"    }
+tek_plugin  = { path = "./plugin"  }
+tek_sampler = { path = "./sampler" }
+tek_time    = { path = "./time"    }
+
+atomic_float = { version = "1.0.0" }
+backtrace    = { version = "0.3.72" }
+clap         = { version = "4.5.4", features = [ "derive" ] }
+gtk          = { version = "0.18.1" }
+jack         = { git = "https://codeberg.org/unspeaker/rust-jack", ref = "a13c1c4" }
+livi         = { version = "0.7.4" }
+midly        = { version = "0.5" }
+palette      = { version = "0.7.6", features = [ "random" ] }
+quanta       = { version = "0.12.3" }
+rand         = { version = "0.8.5"  }
+symphonia    = { version = "0.5.4", features = [ "all" ] }
+toml         = { version = "0.8.12" }
+uuid         = { version = "1.10.0", features = [ "v4" ] }
+wavers       = { version = "1.4.3" }
+#once_cell = "1.19.0"
+#no_deadlocks = "1.3.2"
+#suil-rs = { path = "../suil" }
+#vst = "0.4.0"
+#vst3 = "0.1.0"
+#winit = { version = "0.30.4", features = [ "x11" ] }
+
+[workspace.dev-dependencies]
+proptest        = "^1"
+proptest-derive = "^0.5.1"
diff --git a/app/Cargo.toml b/app/Cargo.toml
index 774d32f1..5a04b8ee 100644
--- a/app/Cargo.toml
+++ b/app/Cargo.toml
@@ -1,27 +1,27 @@
 [package]
-name = "tek"
+name    = "tek"
 edition = "2021"
 version = "0.2.0"
 
 [dependencies]
-tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" }
+tengri = { workspace = true }
 
-tek_jack    = { path = "../jack"    }
-tek_time    = { path = "../time"    }
-tek_midi    = { path = "../midi"    }
-tek_sampler = { path = "../sampler" }
-tek_plugin  = { path = "../plugin"  }
+tek_jack    = { workspace = true }
+tek_time    = { workspace = true }
+tek_midi    = { workspace = true }
+tek_sampler = { workspace = true }
+tek_plugin  = { workspace = true }
 
-backtrace = "0.3.72"
-palette = { version = "0.7.6", features = [ "random" ] }
-rand = "0.8.5"
-toml = "0.8.12"
-clap = { optional = true, version = "4.5.4", features = [ "derive" ] }
+backtrace = { workspace = true }
+clap      = { workspace = true }
+palette   = { workspace = true }
+rand      = { workspace = true }
+toml      = { workspace = true }
 
 [dev-dependencies]
-proptest = "^1"
-proptest-derive = "^0.5.1"
+proptest        = { workspace = true }
+proptest-derive = { workspace = true }
 
 [features]
 default = ["cli"]
-cli = ["clap"]
+cli     = ["clap"]
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 3ca74edf..4ab17c71 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -4,8 +4,9 @@ edition = "2021"
 version = "0.2.0"
 
 [dependencies]
-tek = { path = "../app" }
-clap = { version = "4.5.4", features = [ "derive" ] }
+tek = { workspace = true }
+
+clap = { workspace = true }
 
 [[bin]]
 name = "tek"
diff --git a/jack/Cargo.toml b/jack/Cargo.toml
index afee94fc..099d33f8 100644
--- a/jack/Cargo.toml
+++ b/jack/Cargo.toml
@@ -4,4 +4,4 @@ edition = "2021"
 version = "0.2.0"
 
 [dependencies]
-jack = { git = "https://codeberg.org/unspeaker/rust-jack", rev = "a13c1c4" }
+jack = { workspace = true }
diff --git a/midi/Cargo.toml b/midi/Cargo.toml
index de11c479..c7626625 100644
--- a/midi/Cargo.toml
+++ b/midi/Cargo.toml
@@ -4,42 +4,10 @@ edition = "2021"
 version = "0.2.0"
 
 [dependencies]
-tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" }
+tengri = { workspace = true }
 
-tek_jack = { path = "../jack" }
-tek_time = { path = "../time" }
+tek_jack = { workspace = true }
+tek_time = { workspace = true }
 
-midly = "0.5"
-uuid = { version = "1.10.0", features = [ "v4" ] }
-
-#[[bin]]
-#name = "tek_arranger"
-#path = "bin/cli_arranger.rs"
-
-#[[bin]]
-#name = "tek_sequencer"
-#path = "bin/cli_sequencer.rs"
-
-#[[bin]]
-#name = "tek_groovebox"
-#path = "bin/cli_groovebox.rs"
-
-#[[bin]]
-#name = "tek_clock"
-#path = "bin/cli_clock.rs"
-
-#[[bin]]
-#name = "tek_sampler"
-#path = "bin/cli_sampler.rs"
-
-#[[bin]]
-#name = "tek_mixer"
-#path = "src/cli_mixer.rs"
-
-#[[bin]]
-#name = "tek_track"
-#path = "src/cli_track.rs"
-
-#[[bin]]
-#name = "tek_plugin"
-#path = "src/cli_plugin.rs"
+midly = { workspace = true }
+uuid  = { workspace = true }
diff --git a/plugin/Cargo.toml b/plugin/Cargo.toml
index de2f2243..6865e0e0 100644
--- a/plugin/Cargo.toml
+++ b/plugin/Cargo.toml
@@ -4,16 +4,8 @@ edition = "2021"
 version = "0.2.0"
 
 [dependencies]
-tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" }
+tengri = { workspace = true }
 
-tek_jack = { path = "../jack" }
-tek_time = { path = "../time" }
-tek_midi = { path = "../midi" }
-
-livi = "0.7.4"
-#once_cell = "1.19.0"
-#no_deadlocks = "1.3.2"
-#suil-rs = { path = "../suil" }
-#vst = "0.4.0"
-#vst3 = "0.1.0"
-#winit = { version = "0.30.4", features = [ "x11" ] }
+tek_jack = { workspace = true }
+tek_time = { workspace = true }
+tek_midi = { workspace = true }
diff --git a/sampler/Cargo.toml b/sampler/Cargo.toml
index f9716bea..27318072 100644
--- a/sampler/Cargo.toml
+++ b/sampler/Cargo.toml
@@ -4,11 +4,11 @@ edition = "2021"
 version = "0.2.0"
 
 [dependencies]
-tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" }
+tengri = { workspace = true }
 
-tek_jack = { path = "../jack" }
-tek_time = { path = "../time" }
-tek_midi = { path = "../midi" }
+tek_jack = { workspace = true }
+tek_time = { workspace = true }
+tek_midi = { workspace = true }
 
-symphonia = { version = "0.5.4", features = [ "all" ] }
-wavers = "1.4.3"
+symphonia = { workspace = true }
+wavers    = { workspace = true }
diff --git a/time/Cargo.toml b/time/Cargo.toml
index 1f54803f..8bbac671 100644
--- a/time/Cargo.toml
+++ b/time/Cargo.toml
@@ -1,17 +1,9 @@
 [package]
-name = "tek_time"
+name    = "tek_time"
 edition = "2021"
 version = "0.2.0"
 
 [dependencies]
-tek_input = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" }
-tek_edn   = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" }
-tek_tui   = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" }
-
-tek_jack  = { path = "../jack"  }
-
-atomic_float = "1.0.0"
-quanta = "0.12.3"
-#jack = { path = "../rust-jack" }
-#midly = "0.5"
+tengri = { workspace = true }
 
+tek_jack = { workspace = true }