diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,2 @@
+# monad-time-effectful-1.0.0.0 (2023-06-19)
+* Initial release.
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2021 Hécate Moonlight
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,10 @@
+# monad-time-effectful
+
+[![Build Status](https://github.com/haskell-effectful/monad-time-effectful/workflows/Haskell-CI/badge.svg?branch=master)](https://github.com/haskell-effectful/monad-time-effectful/actions?query=branch%3Amaster)
+[![Hackage](https://img.shields.io/hackage/v/monad-time-effectful.svg)](https://hackage.haskell.org/package/monad-time-effectful)
+[![Dependencies](https://img.shields.io/hackage-deps/v/monad-time-effectful.svg)](https://packdeps.haskellers.com/feed?needle=andrzej@rybczak.net)
+[![Stackage LTS](https://www.stackage.org/package/monad-time-effectful/badge/lts)](https://www.stackage.org/lts/package/monad-time-effectful)
+[![Stackage Nightly](https://www.stackage.org/package/monad-time-effectful/badge/nightly)](https://www.stackage.org/nightly/package/monad-time-effectful)
+
+
+Adaptation of the [monad-time](https://hackage.haskell.org/package/monad-time) library for the [effectful](https://hackage.haskell.org/package/effectful) ecosystem.
diff --git a/monad-time-effectful.cabal b/monad-time-effectful.cabal
new file mode 100644
--- /dev/null
+++ b/monad-time-effectful.cabal
@@ -0,0 +1,49 @@
+cabal-version:      2.4
+build-type:         Simple
+name:               monad-time-effectful
+version:            1.0.0.0
+license:            MIT
+license-file:       LICENSE
+category:           Control
+maintainer:         andrzej@rybczak.net
+author:             Andrzej Rybczak, Hécate Moonlight
+
+synopsis:           Adaptation of the monad-time library for the effectful ecosystem.
+
+description:        Adaptation of the @<https://hackage.haskell.org/package/monad-time monad-time>@ library for the @<https://hackage.haskell.org/package/effectful effectful>@ ecosystem.
+
+extra-source-files:
+  CHANGELOG.md
+  README.md
+
+tested-with: GHC ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.8 || ==9.4.5 || ==9.6.2
+
+bug-reports: https://github.com/haskell-effectful/monad-time-effectful/issues
+source-repository head
+  type:     git
+  location: https://github.com/haskell-effectful/monad-time-effectful
+
+common language
+  ghc-options:        -Wall -Wcompat -Wno-unticked-promoted-constructors
+
+  default-language:   Haskell2010
+
+  default-extensions: BangPatterns
+                      DataKinds
+                      FlexibleContexts
+                      GADTs
+                      LambdaCase
+                      KindSignatures
+                      TypeFamilies
+                      TypeOperators
+
+library
+  import:          language
+
+  build-depends: base            <5
+               , effectful-core  >=1.0.0.0   && <3.0.0.0
+               , monad-time
+               , time
+
+  hs-source-dirs:  src
+  exposed-modules: Effectful.Time
diff --git a/src/Effectful/Time.hs b/src/Effectful/Time.hs
new file mode 100644
--- /dev/null
+++ b/src/Effectful/Time.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE UndecidableInstances #-}
+{-# OPTIONS_GHC -Wno-orphans #-}
+
+-- | Time measurement via 'MonadTime'.
+module Effectful.Time
+  ( -- * Effect
+    Time (..)
+  , MonadTime (..)
+
+    -- ** Handlers
+  , runTime
+  , runFrozenTime
+  ) where
+
+import Control.Monad.IO.Class
+import Control.Monad.Time
+import Data.Time
+import Effectful
+import Effectful.Dispatch.Dynamic
+import GHC.Clock (getMonotonicTime)
+
+-- | Provide the ability to use the 'MonadTime' instance of 'Eff'.
+data Time :: Effect where
+  CurrentTime :: Time m UTCTime
+  MonotonicTime :: Time m Double
+
+type instance DispatchOf Time = Dynamic
+
+-- | Run a 'Time' effect via 'IO'.
+runTime :: IOE :> es => Eff (Time : es) a -> Eff es a
+runTime = interpret $ \_ -> \case
+  CurrentTime -> liftIO getCurrentTime
+  MonotonicTime -> liftIO getMonotonicTime
+
+-- | Run a 'Time' effect with a frozen value of the 'CurrentTime' operation.
+--
+-- /Note:/ the 'MonotonicTime' operation works the same way as in 'runTime'.
+runFrozenTime :: IOE :> es => UTCTime -> Eff (Time : es) a -> Eff es a
+runFrozenTime time = interpret $ \_ -> \case
+  CurrentTime -> pure time
+  MonotonicTime -> liftIO getMonotonicTime
+
+----------------------------------------
+-- Orphan instance
+
+instance Time :> es => MonadTime (Eff es) where
+  currentTime = send CurrentTime
+  monotonicTime = send MonotonicTime
