diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index c3d96a6803cdd4cba039e458cae193ee41120440..a216ace2af2e42cbbe613760f9dd12bda639b132 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -21,7 +21,6 @@
 /op-program     @ethereum-optimism/go-reviewers
 /op-proposer    @ethereum-optimism/go-reviewers
 /op-service     @ethereum-optimism/go-reviewers
-/op-signer      @ethereum-optimism/go-reviewers
 /op-wheel       @ethereum-optimism/go-reviewers
 /ops-bedrock    @ethereum-optimism/go-reviewers
 
@@ -29,7 +28,6 @@
 /.circleci    @ethereum-optimism/infra-reviewers
 /.github      @ethereum-optimism/infra-reviewers
 /ops          @ethereum-optimism/infra-reviewers
-/op-signer    @ethereum-optimism/infra-reviewers
 
 # Misc
 /proxyd           @ethereum-optimism/infra-reviewers
diff --git a/.github/mergify.yml b/.github/mergify.yml
index e336a46b86dd6d80a0b884386ef82fa24356e72e..eacdb802e3245c5cd3a32ea7e3b927766ea63503 100644
--- a/.github/mergify.yml
+++ b/.github/mergify.yml
@@ -197,14 +197,6 @@ pull_request_rules:
       label:
         add:
           - A-op-service
-  - name: Add A-op-signer label
-    conditions:
-      - 'files~=^op-signer/'
-      - '#label<5'
-    actions:
-      label:
-        add:
-          - A-op-signer
   - name: Add A-op-wheel label
     conditions:
       - 'files~=^op-wheel/'
diff --git a/README.md b/README.md
index 97979396219853ed75e1c38632ef5cc69548d1b7..bd21be79e6df7a5ec0ea00a09597b651ec826825 100644
--- a/README.md
+++ b/README.md
@@ -61,7 +61,6 @@ Refer to the Directory Structure section below to understand which packages are
 鈹溾攢鈹€ <a href="./op-program">op-program</a>: Fault proof program
 鈹溾攢鈹€ <a href="./op-proposer">op-proposer</a>: L2-Output Submitter, submits proposals to L1
 鈹溾攢鈹€ <a href="./op-service">op-service</a>: Common codebase utilities
-鈹溾攢鈹€ <a href="./op-signer">op-signer</a>: Client signer
 鈹溾攢鈹€ <a href="./op-wheel">op-wheel</a>: Database utilities
 鈹溾攢鈹€ <a href="./ops-bedrock">ops-bedrock</a>: Bedrock devnet work
 鈹溾攢鈹€ <a href="./packages">packages</a>
diff --git a/op-batcher/Dockerfile b/op-batcher/Dockerfile
index 9e5408653478bbc930c7dc4a89b17cb70b3c749c..bae7cb3473d777e8ba477b88948f3e3dea3fd81b 100644
--- a/op-batcher/Dockerfile
+++ b/op-batcher/Dockerfile
@@ -16,7 +16,6 @@ COPY ./op-batcher /app/op-batcher
 COPY ./op-bindings /app/op-bindings
 COPY ./op-node /app/op-node
 COPY ./op-service /app/op-service
-COPY ./op-signer /app/op-signer
 
 COPY ./.git /app/.git
 
diff --git a/op-challenger/Dockerfile b/op-challenger/Dockerfile
index 1bd0ebebcb2f2efae6b218719a117eb11f46c523..b234dae70e2cf3688cb37af5efd53bd53f8aafba 100644
--- a/op-challenger/Dockerfile
+++ b/op-challenger/Dockerfile
@@ -18,7 +18,6 @@ COPY ./op-preimage /app/op-preimage
 COPY ./op-bindings /app/op-bindings
 COPY ./op-node /app/op-node
 COPY ./op-service /app/op-service
-COPY ./op-signer /app/op-signer
 COPY ./.git /app/.git
 
 # Copy cannon and its dependencies
diff --git a/op-proposer/Dockerfile b/op-proposer/Dockerfile
index 02ad7ef5cb83085959c2b06d0770cae3e6eed8df..ae335221733dabf48c0f7de5dacf6828614776bd 100644
--- a/op-proposer/Dockerfile
+++ b/op-proposer/Dockerfile
@@ -16,7 +16,6 @@ COPY ./op-proposer /app/op-proposer
 COPY ./op-bindings /app/op-bindings
 COPY ./op-node /app/op-node
 COPY ./op-service /app/op-service
-COPY ./op-signer /app/op-signer
 COPY ./.git /app/.git
 
 WORKDIR /app/op-proposer
diff --git a/op-service/crypto/signature.go b/op-service/crypto/signature.go
index 687ff1a46a7f4b6f6cabbb81b6cdac4cfacb75ff..c0abd3ef2afdca705a9c95b8b87552f9eca7b87e 100644
--- a/op-service/crypto/signature.go
+++ b/op-service/crypto/signature.go
@@ -17,7 +17,7 @@ import (
 	"github.com/ethereum/go-ethereum/log"
 
 	hdwallet "github.com/ethereum-optimism/go-ethereum-hdwallet"
-	opsigner "github.com/ethereum-optimism/optimism/op-signer/client"
+	opsigner "github.com/ethereum-optimism/optimism/op-service/signer"
 )
 
 func PrivateKeySignerFn(key *ecdsa.PrivateKey, chainID *big.Int) bind.SignerFn {
diff --git a/op-signer/client/config.go b/op-service/signer/cli.go
similarity index 99%
rename from op-signer/client/config.go
rename to op-service/signer/cli.go
index 6071f0f1de2d7d10f6ca39e926a196670e02745a..1da5330dc4d61a27d9f6e46482c86c639fed19b2 100644
--- a/op-signer/client/config.go
+++ b/op-service/signer/cli.go
@@ -1,4 +1,4 @@
-package client
+package signer
 
 import (
 	"errors"
diff --git a/op-signer/client/config_test.go b/op-service/signer/cli_test.go
similarity index 99%
rename from op-signer/client/config_test.go
rename to op-service/signer/cli_test.go
index 862cfa35783d1f5b4105a5366d307c72de3c2cab..a7fd7385a30e8ef21cdfa2e6004407da06690523 100644
--- a/op-signer/client/config_test.go
+++ b/op-service/signer/cli_test.go
@@ -1,4 +1,4 @@
-package client
+package signer
 
 import (
 	"testing"
diff --git a/op-signer/client/client.go b/op-service/signer/client.go
similarity index 99%
rename from op-signer/client/client.go
rename to op-service/signer/client.go
index c8e273dbe03b8d88ff4bc4154d564a3cc0e8f542..e5baa33568f8ea667eb47340e390dd8a3bf538de 100644
--- a/op-signer/client/client.go
+++ b/op-service/signer/client.go
@@ -1,4 +1,4 @@
-package client
+package signer
 
 import (
 	"context"
diff --git a/op-signer/client/transaction_args.go b/op-service/signer/transaction_args.go
similarity index 99%
rename from op-signer/client/transaction_args.go
rename to op-service/signer/transaction_args.go
index 480d46a15e103bc7c6ff7c2e050270ca3ee02dff..ea9fcd4862318f839f3107c88f63e9d5acb611f5 100644
--- a/op-signer/client/transaction_args.go
+++ b/op-service/signer/transaction_args.go
@@ -1,4 +1,4 @@
-package client
+package signer
 
 import (
 	"math/big"
diff --git a/op-service/txmgr/cli.go b/op-service/txmgr/cli.go
index 3ac3df203e55607668ef3997e8ebb4680a8b5b05..cf8419ce60ac31d3993b78be2294e8a050a7ab47 100644
--- a/op-service/txmgr/cli.go
+++ b/op-service/txmgr/cli.go
@@ -9,7 +9,7 @@ import (
 
 	opservice "github.com/ethereum-optimism/optimism/op-service"
 	opcrypto "github.com/ethereum-optimism/optimism/op-service/crypto"
-	"github.com/ethereum-optimism/optimism/op-signer/client"
+	opsigner "github.com/ethereum-optimism/optimism/op-service/signer"
 	"github.com/ethereum/go-ethereum/common"
 	"github.com/ethereum/go-ethereum/ethclient"
 	"github.com/ethereum/go-ethereum/log"
@@ -19,7 +19,7 @@ import (
 const (
 	// Duplicated L1 RPC flag
 	L1RPCFlagName = "l1-eth-rpc"
-	// Key Management Flags (also have op-signer client flags)
+	// Key Management Flags (also have signer client flags)
 	MnemonicFlagName   = "mnemonic"
 	HDPathFlagName     = "hd-path"
 	PrivateKeyFlagName = "private-key"
@@ -145,7 +145,7 @@ func CLIFlagsWithDefaults(envPrefix string, defaults DefaultFlagValues) []cli.Fl
 			Value:   defaults.ReceiptQueryInterval,
 			EnvVars: prefixEnvVars("TXMGR_RECEIPT_QUERY_INTERVAL"),
 		},
-	}, client.CLIFlags(envPrefix)...)
+	}, opsigner.CLIFlags(envPrefix)...)
 }
 
 type CLIConfig struct {
@@ -155,7 +155,7 @@ type CLIConfig struct {
 	SequencerHDPath           string
 	L2OutputHDPath            string
 	PrivateKey                string
-	SignerCLIConfig           client.CLIConfig
+	SignerCLIConfig           opsigner.CLIConfig
 	NumConfirmations          uint64
 	SafeAbortNonceTooLowCount uint64
 	ResubmissionTimeout       time.Duration
@@ -175,7 +175,7 @@ func NewCLIConfig(l1RPCURL string, defaults DefaultFlagValues) CLIConfig {
 		TxSendTimeout:             defaults.TxSendTimeout,
 		TxNotInMempoolTimeout:     defaults.TxNotInMempoolTimeout,
 		ReceiptQueryInterval:      defaults.ReceiptQueryInterval,
-		SignerCLIConfig:           client.NewCLIConfig(),
+		SignerCLIConfig:           opsigner.NewCLIConfig(),
 	}
 }
 
@@ -215,7 +215,7 @@ func ReadCLIConfig(ctx *cli.Context) CLIConfig {
 		SequencerHDPath:           ctx.String(SequencerHDPathFlag.Name),
 		L2OutputHDPath:            ctx.String(L2OutputHDPathFlag.Name),
 		PrivateKey:                ctx.String(PrivateKeyFlagName),
-		SignerCLIConfig:           client.ReadCLIConfig(ctx),
+		SignerCLIConfig:           opsigner.ReadCLIConfig(ctx),
 		NumConfirmations:          ctx.Uint64(NumConfirmationsFlagName),
 		SafeAbortNonceTooLowCount: ctx.Uint64(SafeAbortNonceTooLowCountFlagName),
 		ResubmissionTimeout:       ctx.Duration(ResubmissionTimeoutFlagName),
diff --git a/op-signer/.gitignore b/op-signer/.gitignore
deleted file mode 100644
index eb814c28f40045cac989200afaccf13455ab83b6..0000000000000000000000000000000000000000
--- a/op-signer/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-mocks/
-mock_*
-tls/
diff --git a/op-signer/README.md b/op-signer/README.md
deleted file mode 100644
index ed2ecba1fd8be0b4066585405c0fde57ed9a9afe..0000000000000000000000000000000000000000
--- a/op-signer/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# op-signer
-
-op-signer service client
diff --git a/op-ufm/go.mod b/op-ufm/go.mod
index 7f2512d0f367b352e19394b195e9d71d53006fa1..8ec99585ff38768d1edb4c89d679c994d66cefb5 100644
--- a/op-ufm/go.mod
+++ b/op-ufm/go.mod
@@ -6,7 +6,6 @@ require (
 	cloud.google.com/go/kms v1.12.1
 	github.com/BurntSushi/toml v1.3.2
 	github.com/ethereum-optimism/optimism/op-service v0.10.14
-	github.com/ethereum-optimism/optimism/op-signer v0.1.1
 	github.com/ethereum/go-ethereum v1.12.1
 	github.com/gorilla/mux v1.8.0
 	github.com/pkg/errors v0.9.1
diff --git a/op-ufm/go.sum b/op-ufm/go.sum
index 34c3299641b218aa416c66b3174b4cb2920da5e8..439e8d112189bf7df053fc8974d70a70f9fa6b40 100644
--- a/op-ufm/go.sum
+++ b/op-ufm/go.sum
@@ -98,8 +98,6 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7
 github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw=
 github.com/ethereum-optimism/optimism/op-service v0.10.14 h1:MC+rVwtPfX1aPAKA3855DQaCnhjjp4uFcSr8PY7HmaE=
 github.com/ethereum-optimism/optimism/op-service v0.10.14/go.mod h1:8ay6Bs3YHaX+FbJRUGSbxBnXRtEbKXNHMhtJqATrBmY=
-github.com/ethereum-optimism/optimism/op-signer v0.1.1 h1:Ts6aWd5/nTQ8ZRFZhpOrrcWpnVmdp4fRfff1mvybnGs=
-github.com/ethereum-optimism/optimism/op-signer v0.1.1/go.mod h1:HK+9do1IJmDr9aEc44ECweYbCLDfGGYO7PBwTqDNrqI=
 github.com/ethereum/c-kzg-4844 v0.3.0 h1:3Y3hD6l5i0dEYsBL50C+Om644kve3pNqoAcvE26o9zI=
 github.com/ethereum/c-kzg-4844 v0.3.0/go.mod h1:WI2Nd82DMZAAZI1wV2neKGost9EKjvbpQR9OqE5Qqa8=
 github.com/ethereum/go-ethereum v1.12.1 h1:1kXDPxhLfyySuQYIfRxVBGYuaHdxNNxevA73vjIwsgk=
diff --git a/op-ufm/pkg/metrics/clients/signer.go b/op-ufm/pkg/metrics/clients/signer.go
index 54f1163a6d0e4951cdc22f83e2555270ae8f6330..8a15463a81f56bff8a0c1fb21a2542e5268b01be 100644
--- a/op-ufm/pkg/metrics/clients/signer.go
+++ b/op-ufm/pkg/metrics/clients/signer.go
@@ -8,7 +8,7 @@ import (
 	"github.com/ethereum-optimism/optimism/op-ufm/pkg/metrics"
 
 	optls "github.com/ethereum-optimism/optimism/op-service/tls"
-	signer "github.com/ethereum-optimism/optimism/op-signer/client"
+	signer "github.com/ethereum-optimism/optimism/op-service/signer"
 	"github.com/ethereum/go-ethereum/core/types"
 	"github.com/ethereum/go-ethereum/log"
 )