whatisgithub

What is shell-conduit?

psibi/shell-conduit — explained in plain English

Analysis updated 2026-07-11 · repo last pushed 2020-06-20

96HaskellAudience · developerComplexity · 3/5DormantSetup · moderate

In one sentence

A Haskell library that lets you write shell scripts with type safety and normal programming constructs instead of Bash, automatically turning every command-line program on your system into a callable function.

Mindmap

mindmap
  root((repo))
    What it does
      Shell scripts in Haskell
      Auto-generates command functions
      Pipes commands like shell
      Streams data between steps
    Tech stack
      Haskell
      Conduit ecosystem
      Unix command-line tools
    Use cases
      Deployment scripts
      Build pipelines
      System automation
    Audience
      Haskell developers
    Design notes
      Compile-time type checking
      Experimental proof-of-concept
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Write deployment scripts that clone a repo, run a build, and restart a server with graceful error handling.

USE CASE 2

Automate system tasks using familiar Unix tools like ls, grep, and git from within typed Haskell code.

USE CASE 3

Build data-processing pipelines that mix shell commands with inline text transforms, CSV parsing, or HTTP fetching.

USE CASE 4

Write scripts that wait for a process to terminate before proceeding, avoiding painful Bash workarounds.

What is it built with?

HaskellConduit

How does it compare?

psibi/shell-conduitpsibi/yesod-postgrespsibi/odbc-issue-49
Stars9641
LanguageHaskellHaskellHaskell
Last pushed2020-06-202018-08-242022-04-26
MaintenanceDormantDormantDormant
Setup difficultymoderatemoderatemoderate
Complexity3/53/51/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires familiarity with Haskell tooling like Stack or Cabal and the Conduit streaming library ecosystem.

So what is it?

shell-conduit lets you write shell scripts in Haskell instead of Bash. If you've ever found shell scripting frustrating because of brittle quoting rules, confusing error handling, or the difficulty of structuring anything beyond a simple linear sequence of commands, this library offers an alternative: you get the power of a real programming language while still being able to call familiar command-line tools like ls, grep, and git directly from your code. At a high level, the library scans your system's executable paths at compile time and automatically turns every available command-line program into a callable function in your code. You can then chain those commands together using a pipe operator, much like the | symbol in a regular shell script. You can also mix in data-processing steps from the broader Conduit ecosystem, letting you transform text, parse CSV files, or fetch data over HTTP inline with your shell commands. Results stream live between stages by default, so long-running commands can feed output to the next step in real time. This would appeal to Haskell developers who want to automate system tasks, build deployment scripts, or write build pipelines without dropping into Bash. For example, you could write a script that clones a git repository, runs a build script, and then restarts a server, all while handling failures gracefully. The README also shows a script that waits for a process to terminate before proceeding, which is the kind of fiddly logic that's painful to express in a traditional shell script. The project is explicitly experimental, so it's more of a proof-of-concept than a production tool. The notable design choice is how it blurs the line between calling system commands and writing functional code. You get compile-time type checking and the ability to use normal language constructs like conditionals and loops, while still working with the same Unix tools you already know.

Copy-paste prompts

Prompt 1
I want to write a Haskell shell script using shell-conduit that clones a git repo, runs a build script, and restarts a server. Show me how to chain these commands and handle failures gracefully.
Prompt 2
Help me use shell-conduit to pipe the output of ls into grep and then transform the results with a Conduit text-processing step, all in one Haskell script.
Prompt 3
Show me a shell-conduit script that waits for a process to terminate before proceeding to the next step, using proper Haskell conditionals and error handling.
Prompt 4
How do I mix shell-conduit commands with Conduit data-processing steps to fetch data over HTTP and parse a CSV file inline within a Haskell script?

Frequently asked questions

What is shell-conduit?

A Haskell library that lets you write shell scripts with type safety and normal programming constructs instead of Bash, automatically turning every command-line program on your system into a callable function.

What language is shell-conduit written in?

Mainly Haskell. The stack also includes Haskell, Conduit.

Is shell-conduit actively maintained?

Dormant — no commits in 2+ years (last push 2020-06-20).

How hard is shell-conduit to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is shell-conduit for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.