diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,12 @@
 The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
 and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
 
+## 0.2.1 - 2021-06-22
+
+### Added
+
+ - Compatibility with updated dependencies
+
 ## 0.2.0 - 2021-04-21
 
 ### Added
diff --git a/hercules-ci-cli.cabal b/hercules-ci-cli.cabal
--- a/hercules-ci-cli.cabal
+++ b/hercules-ci-cli.cabal
@@ -1,7 +1,7 @@
 cabal-version: 1.12
 
 name:           hercules-ci-cli
-version:        0.2.0
+version:        0.2.1
 synopsis:       The hci command for working with Hercules CI
 homepage:       https://docs.hercules-ci.com
 bug-reports:    https://github.com/hercules-ci/hercules-ci-agent/issues
diff --git a/src/Hercules/CLI/Effect.hs b/src/Hercules/CLI/Effect.hs
--- a/src/Hercules/CLI/Effect.hs
+++ b/src/Hercules/CLI/Effect.hs
@@ -5,7 +5,6 @@
 
 import Data.Has (Has)
 import qualified Data.Text as T
-import Foreign (ForeignPtr)
 import qualified Hercules.API.Projects as Projects
 import qualified Hercules.API.Projects.CreateUserEffectTokenResponse as CreateUserEffectTokenResponse
 import Hercules.Agent.Sensitive (Sensitive (Sensitive))
@@ -19,9 +18,9 @@
 import Hercules.CLI.Secret (getSecretsFilePath)
 import Hercules.CNix (Store)
 import Hercules.CNix.Expr (Match (IsAttrs), Value (rtValue), getAttrBool, getDrvFile, match)
-import Hercules.CNix.Store (buildPaths, getDerivationInputs)
+import qualified Hercules.CNix.Std.Vector as Std.Vector
+import Hercules.CNix.Store (Derivation, StorePath, buildPaths, getDerivationInputs, newStorePathWithOutputs)
 import qualified Hercules.CNix.Store as CNix
-import Hercules.CNix.Store.Context (Derivation)
 import Hercules.Effect (runEffect)
 import Hercules.Error (escalate)
 import Katip (initLogEnv, runKatipContextT)
@@ -78,12 +77,15 @@
           runKatipContextT logEnv () mempty $ runEffect derivation (Sensitive token) secretsJson apiBaseURL workDir
         throwIO exitCode
 
-prepareDerivation :: MonadIO m => Store -> ByteString -> m (ForeignPtr Derivation)
+prepareDerivation :: MonadIO m => Store -> StorePath -> m Derivation
 prepareDerivation store drvPath = do
   derivation <- liftIO $ CNix.getDerivation store drvPath
-  inputs <- liftIO $ getDerivationInputs derivation
-  let paths = [input <> "!" <> output | (input, outputs) <- inputs, output <- outputs]
-  liftIO $ buildPaths store paths
+  inputs <- liftIO $ getDerivationInputs store derivation
+  storePathsWithOutputs <- liftIO Std.Vector.new
+  liftIO $ for_ inputs \(input, outputs) -> do
+    swo <- newStorePathWithOutputs input outputs
+    Std.Vector.pushBackFP storePathsWithOutputs swo
+  liftIO $ buildPaths store storePathsWithOutputs
   pure derivation
 
 ciAttributeArgument :: Optparse.Parser Text
diff --git a/src/Hercules/CLI/State.hs b/src/Hercules/CLI/State.hs
--- a/src/Hercules/CLI/State.hs
+++ b/src/Hercules/CLI/State.hs
@@ -4,6 +4,7 @@
 module Hercules.CLI.State where
 
 import Conduit (ConduitT, mapC, runConduitRes, sinkFile, sourceHandle, stdinC, stdoutC, (.|))
+import Hercules.API (enterApiE)
 import qualified Hercules.API.Projects.Project as Project
 import Hercules.API.State
 import Hercules.CLI.Client
@@ -36,7 +37,9 @@
   pure do
     runAuthenticated do
       projectId <- Project.id <$> findProject project
-      runHerculesClientStream (getProjectStateData stateClient projectId name) \case
+      let projectStateClient = stateClient `enterApiE` \api -> byProjectId api projectId
+      -- TODO: version
+      runHerculesClientStream (getStateData projectStateClient name Nothing) \case
         Left e -> dieWithHttpError e
         Right (Headers r _) -> do
           runConduitRes $
@@ -58,7 +61,8 @@
               liftIO $ withBinaryFile file ReadMode \h ->
                 runRIO r $ f (sourceHandle h .| mapC RawBytes)
       withStream \stream -> do
-        _noContent <- runHerculesClient (putProjectStateData stateClient projectId name (toSourceIO stream))
+        let projectStateClient = stateClient `enterApiE` \api -> byProjectId api projectId
+        _noContent <- runHerculesClient (putStateData projectStateClient name (toSourceIO stream))
         pass
     putErrText $ "hci: State file upload successful for " <> name
 
