diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for constraints-extras
 
+## 0.3.2.0
+
+* Provide `ArgDict` instances for sums of functors.
+
 ## 0.3.1.0
 
 * Allow deriving instances with `deriveArgDict` for data and newtype family instances by supplying the name of one of its constructors
diff --git a/constraints-extras.cabal b/constraints-extras.cabal
--- a/constraints-extras.cabal
+++ b/constraints-extras.cabal
@@ -1,5 +1,5 @@
 name: constraints-extras
-version: 0.3.1.0
+version: 0.3.2.0
 synopsis: Utility package for constraints
 description: Convenience functions and TH for working with constraints. See <https://github.com/obsidiansystems/constraints-extras/blob/develop/README.md README.md> for example usage.
 category: Constraints
@@ -33,7 +33,7 @@
                   , ConstraintKinds
                   , TemplateHaskell
   build-depends: base >=4.9 && <4.16
-               , constraints >= 0.9 && < 0.13
+               , constraints >= 0.9 && < 0.14
                , template-haskell >=2.11 && <2.18
   hs-source-dirs:  src
   default-language: Haskell2010
diff --git a/src/Data/Constraint/Extras.hs b/src/Data/Constraint/Extras.hs
--- a/src/Data/Constraint/Extras.hs
+++ b/src/Data/Constraint/Extras.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE ConstraintKinds #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE PolyKinds #-}
 {-# LANGUAGE RankNTypes #-}
@@ -51,7 +52,9 @@
 import Data.Constraint.Compose
 import Data.Constraint.Flip
 import Data.Constraint.Forall
+import Data.Functor.Sum (Sum(..))
 import Data.Kind
+import GHC.Generics ((:+:)(..))
 
 -- | Morally, this class is for GADTs whose indices can be finitely
 -- enumerated. An @'ArgDict' c f@ instance allows us to do two things:
@@ -73,6 +76,20 @@
   --
   -- > argDict I :: Dict (Show Int)
   argDict :: ConstraintsFor f c => f a -> Dict (c a)
+
+-- | @since 0.3.2.0
+instance (ArgDict c f, ArgDict c g) => ArgDict c (f :+: g) where
+  type ConstraintsFor (f :+: g) c = (ConstraintsFor f c, ConstraintsFor g c)
+  argDict = \case
+    L1 f -> argDict f
+    R1 g -> argDict g
+
+-- | @since 0.3.2.0
+instance (ArgDict c f, ArgDict c g) => ArgDict c (Sum f g) where
+  type ConstraintsFor (Sum f g) c = (ConstraintsFor f c, ConstraintsFor g c)
+  argDict = \case
+    InL f -> argDict f
+    InR g -> argDict g
 
 -- | \"Primed\" variants (@ConstraintsFor'@, 'argDict'', 'Has'',
 -- 'has'', &c.) use the 'ArgDict' instance on @f@ to apply constraints
