diff --git a/dev-util/lttng-tools/Manifest b/dev-util/lttng-tools/Manifest
index d3ec78714c339..ecf56acb300c5 100644
--- a/dev-util/lttng-tools/Manifest
+++ b/dev-util/lttng-tools/Manifest
@@ -1,2 +1,4 @@
DIST lttng-tools-2.13.14.tar.bz2 1932238 BLAKE2B f079051502d01ffc67c4f8f0bbcdf3a4428546c652dcc352918c4908a37aeb510dd66309306cec835297c8d2f276e5cbd22ea4efef6866d3c0c0cf8651d68ef8 SHA512 61bdebb539cfb4eb61c9806e98742f39dc032d849b03d90cdb98d1891bd5bfbd0cb1f54bbc7bf79a11505ce7fee558497312d650bb41f11f739884e7cb8a750f
DIST lttng-tools-2.13.15.tar.bz2 1934955 BLAKE2B 3942ef4a48995329300ddf926a590b5eafbd75847f100e739b4a54be0ddeae41f7acfff0e24243fc41c876dc57be6a13157958ba1fa65111e272d4a7d50280ee SHA512 0aaef9e298e5ec6f4c60d337277ca83aa86af17a1ebdeb976f000a68a8a99a1e4e0d1b88dae3c09171ca903d1ae1118819d4e3981fc4f9aade23b8370db2c367
+DIST lttng-tools-2.14.0.tar.bz2 3256087 BLAKE2B 954ec9563995e21ae05060136b0cb722e53b7c90aace1d45940577ee8dc69055817b5ce560e59c52ecd89cb6a92cdae6429472bfd1a8d167d462def43d8aa7ca SHA512 4027f8c4685976c6b04de1825e1b57dba720e10a055a62ff0b7384387167dce242915cc877022273fe76a9e0c4e907a1779c71354167ca26cf6a0ba332bf7598
+DIST lttng-tools-2.14.0.tar.bz2.asc 833 BLAKE2B 79527dc48e5fdd9b06030507d14ed42a427b98e93796acb3a71d5af6f17a6d2f5a335c4d0e694cb9dd8e774960af12009c138415b4ba72934fea934b5bbce867 SHA512 5104cc0baf02bee630a119ba0b45bd445209706b306ec28d11b7dcad50b6f972ec26537755fb55b603f21e90a03e478e79893d0b80a921bb47045f41613edffd
diff --git a/dev-util/lttng-tools/lttng-tools-2.14.0.ebuild b/dev-util/lttng-tools/lttng-tools-2.14.0.ebuild
new file mode 100644
index 0000000000000..09c2608768dea
--- /dev/null
+++ b/dev-util/lttng-tools/lttng-tools-2.14.0.ebuild
@@ -0,0 +1,129 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..13} )
+inherit autotools flag-o-matic python-any-r1 verify-sig
+
+# Please bump the following packages together:
+# dev-util/lttng-modules
+# dev-util/lttng-tools
+# dev-util/lttng-ust
+
+MY_P="${P/_rc/-rc}"
+MY_SLOT="$(ver_cut 1-2)"
+
+DESCRIPTION="Linux Trace Toolkit - next generation"
+HOMEPAGE="https://lttng.org"
+SRC_URI="
+ https://lttng.org/files/${PN}/${MY_P}.tar.bz2
+ verify-sig? ( https://lttng.org/files/${PN}/${MY_P}.tar.bz2.asc )
+"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-2"
+SLOT="0/${MY_SLOT}"
+KEYWORDS="~amd64 ~x86"
+IUSE="kmod test +ust"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-libs/userspace-rcu-0.11.0:=
+ dev-libs/popt
+ >=dev-libs/libxml2-2.7.6:=
+ kmod? ( sys-apps/kmod )
+ ust? ( >=dev-util/lttng-ust-${MY_SLOT}.0:= )
+"
+DEPEND="
+ ${RDEPEND}
+ test? (
+ >=dev-libs/libpfm-4.0
+ dev-util/babeltrace:2
+ )
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? (
+ ${PYTHON_DEPS}
+ $(python_gen_any_dep '
+ dev-util/babeltrace:2[python,${PYTHON_SINGLE_USEDEP}]
+ ')
+ )
+ verify-sig? ( sec-keys/openpgp-keys-jeremiegalarneau )
+"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/jeremiegalarneau.asc
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ pthread_get_name_np # different from pthread_getname_*, not on linux
+ pthread_set_name_np # different from pthread_setname_*, not on linux
+)
+
+python_check_deps() {
+ python_has_version -d "dev-util/babeltrace:2[python,${PYTHON_SINGLE_USEDEP}]"
+}
+
+pkg_setup() {
+ use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # skip tests that appear to fail due to the sandbox
+ sed -e '/tools\/save-load\/test_autoload/d' \
+ -e '/ust\/ust-app-ctl-paths\/test_blocking/d' \
+ -e '/ust\/ust-app-ctl-paths\/test_path_separators/d' \
+ -e '/ust\/ust-app-ctl-paths\/test_ust_app_ctl_paths/d' \
+ -e '/tools\/metadata\/test_ust/d' \
+ -i tests/regression/Makefile.am || die
+
+ # skip tests which fail outside the ebuild as well
+ sed -e '/tools\/notification\/test_notification_ust_buffer_usage/d' \
+ -e '/tools\/notification\/test_notification_notifier_discarded_count/d' \
+ -e '/tools\/notification\/test_notification_multi_app/d' \
+ -i tests/regression/Makefile.am || die
+
+ eautoreconf
+}
+
+src_configure() {
+ # bug 906928
+ use elibc_musl && append-cppflags -D_LARGEFILE64_SOURCE
+
+ local myeconfargs=(
+ $(use_with kmod)
+ $(use_with ust lttng-ust)
+ --disable-test-sdt-uprobe
+ --disable-python-bindings
+ --disable-Werror
+ $(use_enable test tests)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ # see tests/README.adoc
+ local -x LTTNG_ENABLE_DESTRUCTIVE_TESTS=0
+ local -x LTTNG_TOOLS_DISABLE_KERNEL_TESTS=1
+
+ # Useful for cases like bug #762475
+ local -x LTTNG_TEST_SERIAL_TEST_TIMEOUT_MINUTES=30
+
+ # Otherwise it will try to use the system installed binary (and fail if its not installed prior!)
+ local -x LTTNG_SESSIOND_PATH="${S}/src/bin/lttng-sessiond/lttng-sessiond"
+
+ # Otherwise it tries to use /var/lib/portage/home
+ local -x LTTNG_HOME="${HOME}/lttng"
+ mkdir -p "${LTTNG_HOME}" || die
+
+ # Tests misbehave if you are unlucky
+ emake check -j1
+}
+
+src_install() {
+ default
+ find "${ED}" -type f -name '*.la' -delete || die
+}
diff --git a/dev-util/lttng-tools/metadata.xml b/dev-util/lttng-tools/metadata.xml
index 83683ac4848fb..62518398e5b7a 100644
--- a/dev-util/lttng-tools/metadata.xml
+++ b/dev-util/lttng-tools/metadata.xml
@@ -6,6 +6,7 @@
LTTng, the Linux Trace Toolkit Next Generation, is a project that aims at producing a highly efficient full system tracing solution