GitPedia

Tofu

Functional programming toolbox

From tofu-tf·Updated June 14, 2026·View on GitHub·

**Functional programming toolkit aimed at taming the complexity of Tagless Final approach.** The project is written primarily in Scala, distributed under the Apache License 2.0 license, first published in 2019. Key topics include: concurrent, config, effects, functional-programming, hacktoberfest.

Latest release: v0.14.1Tofu 0.14.1
July 16, 2025View Changelog →
<img align="right" src="logos/tofu-mascot.png" height="170px" style="padding-left: 20px"/>

ToFu

Build & Release
Maven Central
Sonatype Nexus (Snapshots) badge
Discord Chat
Zulip
Scala Steward badge

Functional programming toolkit aimed at taming the complexity of Tagless Final approach.

Quick Start

see the docs on the microsite

see the examples in the examples directory

To use the whole utils pack just add to your build.sbt:

scala
libraryDependencies += "tf.tofu" %% "tofu" % "latest version in badge"

Of course, you can also specify an exact list of tofu modules that you want to add to your dependencies (used in place
of "tofu"):

  • tofu-kernel for core independent utils
    • tofu-kernel-cats-mtl for interop between tofu-kernel and Cats MTL
  • tofu-core-* for core utils (replace suffix * with ce2 or ce3 depends on which cats-effect version you use)
  • tofu-core-higher-kind for higher kinded utils
  • tofu-concurrent for concurrent utils
  • tofu-config for config utils
  • tofu-data for data utils
  • tofu-derivation for derivation utils and derevo annotations
  • tofu-doobie for Doobie utils
  • tofu-enums for Enumeratum utils
  • tofu-env for Env (a variation of a Reader Monad based on Monix Task)
  • tofu-fs2-interop for interop with fs2
  • tofu-streams for streaming utils
  • tofu-logging for the whole set of logging utils (derivation, layout, structured, util, interop)
    • tofu-logging-derivation for logging derivation only
    • tofu-logging-layout for logging layout only
    • tofu-logging-structured for logging structured only
    • tofu-logging-util for logging util only
    • tofu-logging-refined for interop between tofu-logging and Refined
    • tofu-logging-shapeless for interop between tofu-logging and Shapeless tag
    • tofu-logging-log4cats for interop with Log4Cats
  • tofu-memo for caching utils
  • tofu-observable for monix.reactive.Observable utils
  • tofu-zio-interop for interop with ZIO (core, logging)
    • tofu-zio-core for ZIO instances only
    • tofu-zio-logging for ZIO logging only
<img align="right" src="logos/tofu-logo.png" height="100px" style="padding-left: 5px"/>

Adopters

Proud user of ToFu? Feel free to add your company!

<a href="https://tinkoff.ru/"><img width="40%" src="logos/t-logo.svg?sanitize=true" /></a>

<a href="https://vivid.money/"><img width="40%" src="logos/vivid.svg?sanitize=true" /></a>

<a href="https://tele2.ru/"><img width="40%" src="logos/tele2-ru-logo.svg?sanitize=true" /></a>

<a href="https://konfy.care/"><img width="40%" src="logos/konfy-logo.svg?sanitize=true" /></a>

<a href="https://www.raiffeisen.ru/en/"><img width="40%" src="logos/raiffeisen-logo.svg?sanitize=true" alt="Raiffeisen Bank Russia"/></a>

<a href="https://www.rms.com/"><img width="15%" src="logos/rms-logo.svg?sanitize=true" alt="Risk Management Solutions" /></a>

Contributing

Please note we use the following labels for automated release descriptions:

  • chore if your PR does not change any types and runtime semantics
  • fix if your PR merely fixes incorrect behavior

Formatting

We have an automated check for style conformance. You can run sbt checkfmt before PR.
If you have any trouble during this check, just run sbt fmt and commit again.

Copyright

Copyright the maintainers, 2019-2024

Logos made with love by @impurepics

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from tofu-tf/tofu via the GitHub API.Last fetched: 6/19/2026