On this page

Haskell Agent is an independent agent harness that connects language models to your projects, tools, and ongoing work. Use it to investigate a codebase, implement changes, run checks, and return to a task later without starting over.

You choose the model and provider. The harness manages the conversation, tool execution, approvals, saved sessions, and parallel agents.

Start here

  1. Install Haskell Agent and open a project.
  2. Connect a provider using a supported account or API key.
  3. Use the terminal to give instructions, inspect progress, and review changes.
nix run --accept-flake-config github:digitallyinduced/haskell-agent

Run that command from a project directory with Nix flakes enabled. It opens the terminal client without adding an entry to your Nix profile. The first-session walkthrough takes you from installation through authentication, a small edit, review, and resuming saved work.

Your first session

Inside the agent, enter /login to connect an account, then /model to choose a model. Complete each interface before continuing. Use /session-info to inspect the selected model and current session.

Begin with investigation rather than an open-ended request to change the project. Ask the agent to identify evidence, not just offer an explanation:

Read this project's instructions and README. Identify its entry points
and the supported test command, with file references. Do not modify files.

You should receive a repository-specific explanation and see the tool activity used to establish it. If the answer names the wrong directory or invents a test command, correct that before asking for edits. Review any tool approval request against the task you actually gave.

Work on a project

Once the agent has identified the test command, give it a bounded change:

Add a short README section describing the existing test command.
Do not change application code. Run any applicable documentation checks,
report their results, and do not commit or push.

Use /diff to inspect the result. Ask for a correction if unrelated files changed, and review check output yourself before committing. /quit leaves the session; /resume lets you return later. Use project instructions and plans to establish conventions, and isolated worktrees and parallel agents when work needs to be separated.

Make it your own

For a complete worked task, start with a tutorial:

TaskGuide
Choose a provider or connect a local modelModels
Resume, search, or export previous workSessions
Reuse a documented workflowSkills
Connect external tools and servicesMCP integrations
Configure code intelligenceLanguage servers
Fetch documentation with domain restrictionsWeb access
Maintain reusable lessons across sessionsLearned skills
Work through a Telegram botTelegram
Dictate a promptVoice input
Control tool executionApprovals and sandboxing
Find a commandCommand reference
Diagnose a failureTroubleshooting

About these guides

These guides cover the terminal client and the workflows available in this repository. Capabilities vary by model, provider, platform, and configured tools; a command's presence does not imply every provider supports every tool. Use /help inside a session for the current command list.