diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for shake-plus-extended
 
+## v0.4.0.0
+
+* Add `Development.Shake.Plus.Extended.Conduit" with conduit oracle.
+
 ## v0.3.0.0
 
 * Add `SimpleSPlusEnv` with a `LogFunc` and a local `Path Rel Dir`.
diff --git a/shake-plus-extended.cabal b/shake-plus-extended.cabal
--- a/shake-plus-extended.cabal
+++ b/shake-plus-extended.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           shake-plus-extended
-version:        0.3.0.0
+version:        0.4.0.0
 synopsis:       Experimental extensions to shake-plus
 description:    Experimental extensions to shake-plus - `within`-style file rules, HashMap and IxSet batch loaders.
 category:       development, shake
@@ -26,6 +26,7 @@
 library
   exposed-modules:
       Development.Shake.Plus.Extended
+      Development.Shake.Plus.Extended.Conduit
       Development.Shake.Plus.Extended.FileRules
       Development.Shake.Plus.Extended.Loaders
       Development.Shake.Plus.Extended.Simple
@@ -35,9 +36,12 @@
       src
   default-extensions: BangPatterns BinaryLiterals ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DoAndIfThenElse EmptyDataDecls ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NamedFieldPuns NoImplicitPrelude OverloadedStrings PartialTypeSignatures PatternGuards PolyKinds RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TupleSections TypeFamilies TypeSynonymInstances ViewPatterns
   build-depends:
-      base >=4.7 && <5
+      aeson
+    , base >=4.7 && <5
+    , binary-instances
     , comonad
     , extra
+    , http-conduit
     , ixset-typed
     , ixset-typed-binary-instance
     , ixset-typed-hashable-instance
diff --git a/src/Development/Shake/Plus/Extended/Conduit.hs b/src/Development/Shake/Plus/Extended/Conduit.hs
new file mode 100644
--- /dev/null
+++ b/src/Development/Shake/Plus/Extended/Conduit.hs
@@ -0,0 +1,37 @@
+{- |
+   Module     : Shakebook.Conduit
+   License    : MIT
+   Stability  : experimental
+
+Utilities for using conduit to store remote caches.
+-}
+
+module Development.Shake.Plus.Extended.Conduit (
+  RemoteJSONLookup(..)
+, addRemoteJSONOracleCache
+) where
+
+import           Data.Aeson
+import           Data.Binary.Instances.Aeson ()
+import           Development.Shake.Plus
+import           Network.HTTP.Simple
+import           RIO
+import qualified RIO.Text                    as T
+
+-- | Remote json lookup for an oracle, this should contain a URL as Text.
+newtype RemoteJSONLookup = RemoteJSONLookup Text
+  deriving (Show, Typeable, Eq)
+
+type instance RuleResult RemoteJSONLookup = Value
+
+deriving instance Hashable RemoteJSONLookup
+deriving instance Binary RemoteJSONLookup
+deriving instance NFData RemoteJSONLookup
+
+-- | Adds an oracle cache for looking up json from a remote server.
+addRemoteJSONOracleCache :: (MonadReader r m, MonadRules m) => m (RemoteJSONLookup -> RAction r Value)
+addRemoteJSONOracleCache = addOracleCache $ \(RemoteJSONLookup x) -> do
+  initReq <- parseRequest $ T.unpack x
+  (y :: Response Value) <- httpJSON initReq
+  return $ getResponseBody y
+
