diff --git a/cmd/localstack/main.go b/cmd/localstack/main.go
index f03e3b6..02bf247 100644
--- a/cmd/localstack/main.go
+++ b/cmd/localstack/main.go
@@ -178,6 +178,7 @@ func main() {
 
 	logCollector := NewLogCollector()
 	localStackLogsEgressApi := NewLocalStackLogsEgressAPI(logCollector)
+	tracer := NewLocalStackTracer()
 
 	// build sandbox
 	sandbox := rapidcore.
@@ -191,7 +192,8 @@ func main() {
 		}).
 		SetExtensionsFlag(true).
 		SetInitCachingFlag(true).
-		SetLogsEgressAPI(localStackLogsEgressApi)
+		SetLogsEgressAPI(localStackLogsEgressApi).
+		SetTracer(tracer)
 
 	// xray daemon
 	endpoint := "http://" + lsOpts.LocalstackIP + ":" + lsOpts.EdgePort
diff --git a/cmd/localstack/tracer.go b/cmd/localstack/tracer.go
new file mode 100644
index 0000000..8506a9a
--- /dev/null
+++ b/cmd/localstack/tracer.go
@@ -0,0 +1,63 @@
+package main
+
+import (
+	"context"
+	"encoding/json"
+	"go.amzn.com/lambda/appctx"
+	"go.amzn.com/lambda/interop"
+)
+
+type LocalStackTracer struct {
+	invoke *interop.Invoke
+}
+
+func (t *LocalStackTracer) Configure(invoke *interop.Invoke) {
+	t.invoke = invoke
+}
+
+func (t *LocalStackTracer) CaptureInvokeSegment(ctx context.Context, criticalFunction func(context.Context) error) error {
+	return criticalFunction(ctx)
+}
+
+func (t *LocalStackTracer) CaptureInitSubsegment(ctx context.Context, criticalFunction func(context.Context) error) error {
+	return criticalFunction(ctx)
+}
+
+func (t *LocalStackTracer) CaptureInvokeSubsegment(ctx context.Context, criticalFunction func(context.Context) error) error {
+	return criticalFunction(ctx)
+}
+
+func (t *LocalStackTracer) CaptureOverheadSubsegment(ctx context.Context, criticalFunction func(context.Context) error) error {
+	return criticalFunction(ctx)
+}
+
+func (t *LocalStackTracer) RecordInitStartTime()                                             {}
+func (t *LocalStackTracer) RecordInitEndTime()                                               {}
+func (t *LocalStackTracer) SendInitSubsegmentWithRecordedTimesOnce(ctx context.Context)      {}
+func (t *LocalStackTracer) SendRestoreSubsegmentWithRecordedTimesOnce(ctx context.Context)   {}
+func (t *LocalStackTracer) MarkError(ctx context.Context)                                    {}
+func (t *LocalStackTracer) AttachErrorCause(ctx context.Context, errorCause json.RawMessage) {}
+
+func (t *LocalStackTracer) WithErrorCause(ctx context.Context, appCtx appctx.ApplicationContext, criticalFunction func(ctx context.Context) error) func(ctx context.Context) error {
+	return criticalFunction
+}
+func (t *LocalStackTracer) WithError(ctx context.Context, appCtx appctx.ApplicationContext, criticalFunction func(ctx context.Context) error) func(ctx context.Context) error {
+	return criticalFunction
+}
+func (t *LocalStackTracer) BuildTracingHeader() func(context.Context) string {
+	// extract root trace ID and parent from context and build the tracing header
+	return func(ctx context.Context) string {
+		return t.invoke.TraceID
+	}
+}
+
+func (t *LocalStackTracer) BuildTracingCtxForStart() *interop.TracingCtx {
+	return nil
+}
+func (t *LocalStackTracer) BuildTracingCtxAfterInvokeComplete() *interop.TracingCtx {
+	return nil
+}
+
+func NewLocalStackTracer() *LocalStackTracer {
+	return &LocalStackTracer{}
+}