# Install urweb with Homebrew, Nix

Ur/Web programming language. Version 20200209 via Homebrew; verified 2026-07-01.

## Install

```sh
sudo av install brew:urweb
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install urweb
```

  Evidence: local Homebrew formula metadata

### Linux

- Nix (92%):

```sh
nix profile install nixpkgs#urweb
```

  Evidence: nixpkgs package indexes: pkgs/by-name/ur/urweb/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:urweb
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/urweb>
- **Version:** 20200209
- **Source summary:** Ur/Web programming language
- **Homepage:** <http://www.impredicative.com/ur/>
- **Repository:** <https://github.com/urweb/urweb>
- **Upstream docs:** <http://www.impredicative.com/ur>
- **License:** BSD-3-Clause
- **Source archive:** <https://github.com/urweb/urweb/releases/download/20200209/urweb-20200209.tar.gz>
- **Last updated:** 2026-07-01T21:22:40Z
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- urweb (cli)
- urweb (alias)

## Dependencies

- gmp
- icu4c@78
- openssl@4

## Build dependencies

- autoconf
- automake
- libtool
- mlton

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 20200209
- Package-manager updated: 2026-07-01
- Local data: ok
- Upstream repository: https://github.com/urweb/urweb
- info: No cached GitHub release or tag data was available.
## Project history and usage

Ur/Web is a domain-specific, statically typed functional programming language and compiler for database-backed web applications. The official site presents Ur as an ML/Haskell-like pure, strict, statically typed language with row-type metaprogramming, and Ur/Web as Ur plus web-specific parsing, optimization, and a standard library for dynamic SQL-backed applications.

### Project history

Adam Chlipala's 2010 PLDI paper introduced Ur as a language for statically typed metaprogramming with type-level record computation and described Ur/Web as a special standard library for modern web applications. The official resources page lists additional 2010 talks, a 2010 OSDI paper on security policies, and later Ur/Web research papers.

The 2015 POPL paper framed Ur/Web as a simpler model for modern web programming: one language compiled to the necessary web-standard languages, with modular encapsulation of web state and a concurrency model based on transactions and cooperative preemption. The same period also produced an ICFP 2015 compiler paper describing Ur/Web compilation to efficient native code without garbage collection.

The current GitHub README and official site emphasize type-level guarantees uncommon in mainstream web frameworks: well-typed programs should avoid code injection, invalid HTML, dead internal links, form-handler mismatches, invalid SQL queries, and marshaling mistakes between browser, server, and database.

### Adoption history

The official site lists several production applications, including BazQux Reader, Bitcoin Merge Mining Pool, Ecosrv, Extensibl, and Oilprice, along with student projects and blog posts from 2010 onward. It also lists package/container availability in Arch AUR, Debian, Docker, Homebrew, Milis Linux, Nix, OpenBSD experimental ports, and Ubuntu, while this batch's input confirms Homebrew and Nix package-manager records.

### How it is used

A typical package-manager user installs the compiler as urweb, writes .ur, .urs, and .urp project files, and invokes the urweb executable to compile applications. The GitHub README shows compiling and running a bundled hello demo, while the official resources page directs users to a tutorial, reference manual, demos, FAQ, mailing list, and GitHub issues.

### Why package nerds care

Ur/Web is package-nerd significant because it is not just another library: it is a research language, compiler, runtime model, and web framework packaged as a Unix-style compiler tool. Its availability in Homebrew, Nix, Debian, Ubuntu, and other systems makes an academic language experiment installable through ordinary package workflows.

It also illustrates why package metadata can matter for niche languages. A formula or derivation gives users a reproducible compiler and dependencies, which is crucial for trying a language whose value comes from whole-program guarantees and compiler behavior rather than a single library API.

### Timeline

- 2010-06: PLDI paper on Ur describes Ur/Web as a web-application layer on Ur.
- 2010: Official resources list Ur/Web talks and research around typed web programming.
- 2015-01: POPL paper presents Ur/Web as a simple model for programming the web.
- 2015-08: ICFP paper describes the optimizing Ur/Web compiler.
- 2015-12-20: GitHub repository metadata records repository creation.
- 2020-02-09: Official site and GitHub release metadata identify the 20200209 stable release.

### Related projects

- The official GitHub organization includes Ur/Web libraries and examples such as UPO, email, world, feed, and ajaxUpload. The official site also compares Ur/Web with broader web-framework practice and lists related demos and tutorials.

### Sources

- GitHub repository metadata: https://api.github.com/repos/urweb/urweb
- Input source_facts.package-manager lists Homebrew and Nix packaging.
- Official GitHub README: https://raw.githubusercontent.com/urweb/urweb/master/README.md
- Official project site main page: http://www.impredicative.com/ur/main.html
- Official resources page: http://www.impredicative.com/ur/resources.html
- Official users page: http://www.impredicative.com/ur/users.html
- Ur PLDI 2010 paper page: https://adam.chlipala.net/papers/UrPLDI10/
- Ur/Web ICFP 2015 compiler paper page: https://adam.chlipala.net/papers/UrWebICFP15/
- Ur/Web POPL 2015 paper page: https://adam.chlipala.net/papers/UrWebPOPL15/


## Security Notes

generalized runtime or code generation signal.

- **Geiger risk:** yellow / medium
- generalized runtime or code generation signal

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** urweb
- **Version Scheme:** 0
- **Revision:** 13
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** stable

## Other Package-Manager Records

- Nix - urweb: normalized package name match | nixpkgs package indexes: pkgs/by-name/ur/urweb/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1


## Related links

- [Secret-risk packages](https://www.automicvault.com/pkg/secret-risk-packages/) - Has protected-tool coverage, approval-gate, or non-low Geiger security signals.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Developer build packages](https://www.automicvault.com/pkg/developer-build-tools/) - Matched build, compiler, generator, or developer workflow metadata.
- [Language runtime packages](https://www.automicvault.com/pkg/language-runtime-packages/) - Matched language runtime, compiler, or interpreter metadata.
- [openssl@4](https://www.automicvault.com/pkg/brew/openssl-4/) - Runtime dependency declared by Homebrew.
- [autoconf](https://www.automicvault.com/pkg/brew/autoconf/) - Build dependency declared by Homebrew.
- [automake](https://www.automicvault.com/pkg/brew/automake/) - Build dependency declared by Homebrew.
- [libtool](https://www.automicvault.com/pkg/brew/libtool/) - Build dependency declared by Homebrew.
- [mlton](https://www.automicvault.com/pkg/brew/mlton/) - Build dependency declared by Homebrew.
- [coconut](https://www.automicvault.com/pkg/brew/coconut/) - Shares av.db curated category or tags: cli, compiler, functional-programming, language-runtime, programming-language.
- [crystal](https://www.automicvault.com/pkg/brew/crystal/) - Shares av.db curated category or tags: cli, compiler, language-runtime, programming-language, static-typing.
- [flix](https://www.automicvault.com/pkg/brew/flix/) - Shares av.db curated category or tags: cli, functional-programming, language-runtime, programming-language, static-typing.
- [frege](https://www.automicvault.com/pkg/brew/frege/) - Shares av.db curated category or tags: cli, compiler, functional-programming, language-runtime, programming-language.
- [idris2](https://www.automicvault.com/pkg/brew/idris2/) - Shares av.db curated category or tags: cli, compiler, functional-programming, language-runtime, programming-language.
- [koka](https://www.automicvault.com/pkg/brew/koka/) - Shares av.db curated category or tags: cli, compiler, functional-programming, language-runtime, programming-language.
- [mercury](https://www.automicvault.com/pkg/brew/mercury/) - Shares av.db curated category or tags: cli, compiler, functional-programming, language-runtime, programming-language.
- [never](https://www.automicvault.com/pkg/brew/never/) - Shares av.db curated category or tags: cli, compiler, functional-programming, language-runtime, programming-language.
- [php](https://www.automicvault.com/pkg/brew/php/) - Local package facts share a topical domain. Shared terms: cli, development, gmp, icu4c, icu4c-78.
- [agda](https://www.automicvault.com/pkg/brew/agda/) - Local package facts share a topical domain. Shared terms: cli, functional, functional-programming, gmp, icu4c.

## Combined YAML source

View the package source record on GitHub. [combined/urweb.yml](https://github.com/automic-vault/db/blob/main/combined/urweb.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
