diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.0.10.0
+
+* Add `Bluefin.System.IO`
+
 ## 0.0.9.0
 
 * Add `instance Handle IOE`
diff --git a/bluefin.cabal b/bluefin.cabal
--- a/bluefin.cabal
+++ b/bluefin.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               bluefin
-version:            0.0.9.0
+version:            0.0.10.0
 license:            MIT
 license-file:       LICENSE
 author:             Tom Ellis
@@ -35,8 +35,9 @@
       Bluefin.State,
       Bluefin.StateSource,
       Bluefin.Stream,
+      Bluefin.System.IO,
       Bluefin.Writer,
     build-depends:
-      bluefin-internal >= 0.0.8.0 && < 0.1
+      bluefin-internal >= 0.0.10.0 && < 0.1
     hs-source-dirs:   src
     default-language: Haskell2010
diff --git a/src/Bluefin/System/IO.hs b/src/Bluefin/System/IO.hs
new file mode 100644
--- /dev/null
+++ b/src/Bluefin/System/IO.hs
@@ -0,0 +1,22 @@
+-- | A safer interface to "System.IO.Handle"
+
+module Bluefin.System.IO
+  ( -- * Handle
+    Handle,
+
+    -- * Handlers
+    withFile,
+
+    -- * Effectful operations
+    hPutChar,
+    hPutStr,
+    hPutStrLn,
+    hFlush,
+
+    -- * Unsafe
+
+    unsafeWithHandle,
+  )
+where
+
+import Bluefin.Internal.System.IO
