diff --git a/api/gen/proto/go/teleport/devicetrust/v1/assert.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/assert.pb.go
index dbb3bd609b147..0efdc20200dfc 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/assert.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/assert.pb.go
@@ -41,8 +41,8 @@ const (
// either streams or multi-stage RPCs. The ceremony is resolved by a co-located
// DeviceTrustService.
//
-// See the lib/devicetrust/assert (client) and
-// e/lib/devicetrust/devicetrustv1/assert (server) packages.
+// See the lib/devicetrust/assert (client) and lib/devicetrust/assertserver
+// (server) packages.
//
// Assertion ceremony flow:
// -> AssertDeviceInit (client)
diff --git a/api/proto/teleport/devicetrust/v1/assert.proto b/api/proto/teleport/devicetrust/v1/assert.proto
index 79b869feb046b..5841c0a5c0519 100644
--- a/api/proto/teleport/devicetrust/v1/assert.proto
+++ b/api/proto/teleport/devicetrust/v1/assert.proto
@@ -28,8 +28,8 @@ option go_package = "github.com/gravitational/teleport/api/gen/proto/go/teleport
// either streams or multi-stage RPCs. The ceremony is resolved by a co-located
// DeviceTrustService.
//
-// See the lib/devicetrust/assert (client) and
-// e/lib/devicetrust/devicetrustv1/assert (server) packages.
+// See the lib/devicetrust/assert (client) and lib/devicetrust/assertserver
+// (server) packages.
//
// Assertion ceremony flow:
// -> AssertDeviceInit (client)
diff --git a/lib/devicetrust/assertserver/assert.go b/lib/devicetrust/assertserver/assert.go
new file mode 100644
index 0000000000000..46047e465f3b3
--- /dev/null
+++ b/lib/devicetrust/assertserver/assert.go
@@ -0,0 +1,50 @@
+// Teleport
+// Copyright (C) 2024 Gravitational, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+package assertserver
+
+import (
+ "context"
+
+ devicepb "github.com/gravitational/teleport/api/gen/proto/go/teleport/devicetrust/v1"
+)
+
+// AssertDeviceServerStream represents a server-side device assertion stream.
+type AssertDeviceServerStream interface {
+ Send(*devicepb.AssertDeviceResponse) error
+ Recv() (*devicepb.AssertDeviceRequest, error)
+}
+
+// Ceremony is the server-side device assertion ceremony.
+//
+// Device assertion is a light form of device authentication where the user
+// isn't considered and no side-effects (like certificate issuance) happen.
+//
+// Assertion is meant to be embedded in RPCs or streams external to the
+// DeviceTrustService itself.
+//
+// Implementations are provided by e/.
+// See e/lib/devicetrustv1.Service.CreateAssertCeremony.
+type Ceremony interface {
+ // AssertDevice runs the device assertion ceremonies.
+ //
+ // Requests and responses are consumed from the stream until the device is
+ // asserted or authentication fails.
+ //
+ // As long as any device information is acquired from the stream, a non-nil
+ // device is returned, even if the ceremony itself failed.
+ AssertDevice(ctx context.Context, stream AssertDeviceServerStream) (*devicepb.Device, error)
+}
diff --git a/lib/devicetrust/assertserver/doc.go b/lib/devicetrust/assertserver/doc.go
new file mode 100644
index 0000000000000..eebdb97e81933
--- /dev/null
+++ b/lib/devicetrust/assertserver/doc.go
@@ -0,0 +1,21 @@
+// Teleport
+// Copyright (C) 2024 Gravitational, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+// Package assertserver provides server-side assert interfaces for device trust.
+//
+// It explicitly does not depend on devicetrust/native or other client-side
+// packages. All implementations are provided by e/.
+package assertserver