Skip to content
ProducerMatt edited this page Sep 6, 2023 · 43 revisions

Welcome to the cosmopolitan wiki!

Beginners should check out the FAQ.

Tools

Games

Path Description
o//examples/nesemu1.com A fork of Joel Yliluoma's NES emulator that runs in the command-line
o//examples/hangman.com Hangman game without visuals
o//tool/viz/life.com apelife: Conway's Game of Life, with Windows GUI support
o//tool/viz/deathstar.com Death Star with dynamic, animated lighting

Languages

Path Description
o//third_party/python/python.com Python programming language
o//third_party/quickjs/qjs.com QuickJS JavaScript interpreter
o//third_party/make/make.com Landlock Make: GNU Make with Makefile-determined process sandboxing
o//third_party/lua/lua.com Lua 5.4.3 with Cosmopolitan ZIP enhancements
o//third_party/sqlite3/sqlite3.com SQLite3 database management CLI
o//third_party/awk/awk.com One true awk: Portable awk text processor
o//third_party/sed/sed.com NetBSD sed: Portable sed text processor
o//third_party/tidy/tidy.com HTACG Tidy: tidy and pretty-print XML/HTML/XHTML
o//tool/plinko/plinko.com plinko: aggressively over-optimized Lisp interpreter. May require changing security settings on your distro.

Compilers

Path Description
o//third_party/chibicc/chibicc.com rui314's small C compiler, built alongside a book on compiler development
o//third_party/quickjs/qjsc.com QuickJS JavaScript compiler
o//third_party/python/pyobj.com Python compiler/objectifier
o//third_party/lua/luac.com Lua compiler

Security

Path Description
o//tool/build/pledge.com User-friendly per-program capability sandboxing for Linux systems
o//tool/build/unveil.com User-friendly per-program filesystem sandboxing for Linux systems
o//tool/build/mktemper.com stronger mktemp for shell scripts
o//tool/build/sha256sum.com SHA256 hash given files. Faster than coreutils
o//examples/getrandom.com examine various sources of randomness (or not-so-randomness)

Build Tools

Path Description
o//tool/build/apelink.com Create multi-architecture Actually Portable Executables from many ELF files
o//tool/build/ar.com Fast UNIX archive creator
o//tool/build/assimilate.com Converts Actually Portable Executables to the host's preferred executable format
o//tool/build/compile.com Compiler wrapper for the Cosmopolitan build process
o//tool/build/mkdeps.com Generate Makefiles with header dependencies for the Cosmopolitan build process
o//tool/build/pecheck.com Linter for PE format executables
o//third_party/ctags/ctags.com Programming language object index generator. Enables LSP-style features in your editor. vim, emacs
o//tool/build/zipobj.com Arbitrary file to ELF object file converter
o//tool/build/zipcopy.com Zip artifact copier for Actually Portable Executables
o//tool/build/runit.com Remote test runner
o//tool/build/runitd.com Remote test runner daemon
o//tool/build/fixupobj.com Fixes objects for use in Actually Portable Executables
o//tool/build/package.com Symbol reference verifier
o//tool/build/march-native.com Prints compiler flags for enabling CPU-specific optimizations based on host CPU
o//tool/build/elf2pe.com ELF executable to PE converter
o//tool/build/freebsd2sysv.com Changes ELF header from FreeBSD to SysV.
o//tool/build/objbincopy.com Faster objcopy -SO binary alternative for linking with custom executable headers.
o//tool/build/rollup.com Amalgamates Cosmopolitan header files.

Terminal

Path Description
o//examples/script.com OpenBSD script: record and playback terminal sessions
o//examples/ttyinfo.com examine what keypresses your terminal is passing to programs

Editors

Path Description
o//examples/kilo.com Kilo: Tiny text editor in under 1000 source lines of code

Shells

Path Description
o//tool/build/cocmd.com extremely small Bash command executor, good for linking into exec-heavy programs
o//examples/cosh.com shell powered by cocmd.com. Runs on Unix and Windows, includes Readline-style shortcuts
o//examples/picol.com picol: a tiny Tcl shell
o//examples/unbourne.com a Unix shell based off the Debian Almquist Shell (dash), does not support Windows yet

Network

Path Description
o//tool/net/redbean.com Redbean: webserver with Readline REPL, embedded Lua, SQLite, and ZIP storage
o//tool/net/redbean-demo.com Readbean prepackaged with demonstration files
o//tool/net/redbean-static.com Redbean without dynamic content features like REPL, Lua, SQLite, etc
o//tool/net/redbean-unsecure.com Redbean without TLS
o//tool/net/redbean-original.com Redbean without dynamic content features or TLS
o//tool/curl/curl.com A clone of the curl utility, used to fetch web documents
o//examples/nc.com A clone of the netcat connection utility
o//examples/whois.com A clone of the whois utility, used to get info about DNS names
o//examples/wall.com A clone of the UNIX wall utility, used to broadcast a message to all terminals
o//third_party/finger/finger.com BSD finger: get info about UNIX users
o//tool/net/dig.com A clone of the dig utility, used to query DNS servers

IPv4.Games

Path Description
o//net/turfwar/turfwar.com turfwar: IPv4 Turf War game server
o//net/turfwar/turfbean.com Redbean prepackaged with turfwar reverse proxy script
o//net/turfwar/blackholed.com blackholed: allows unprivileged daemons on Linux and BSD to block IPs in the system firewall
o//net/turfwar/blackhole.com Command-line blackholed client

Machine Learning

Path Description
o//third_party/ggml/llama.com fork of llama.cpp: allows interacting with LLaMA-based large language models
o//third_party/ggml/quantize.com Quantize LLM models
o//third_party/ggml/perplexity.com Measure perplexity of LLM models
o//third_party/radpajama/radpajama.com fork of redpajama.cpp: llama.cpp with RedPajama LLM support
o//third_party/radpajama/radpajama-chat.com Chat interface for redpajama.cpp
o//third_party/radpajama/radpajama-copy.com Copy RedPajama LLM models
o//third_party/radpajama/radpajama-quantize.com Quantize RedPajama LLM models

Graphics

Path Description
o//tool/viz/printimage.com printimage: prints images to the terminal
o//tool/viz/printvideo.com printvideo: plays videos in the terminal
o//tool/viz/derasterize.com Convert images to Unicode ANSI art
o//tool/viz/printansi.com Print images to the terminal without Unicode
o//examples/img.com Quickly generate HTML img tags for a given image

Shell Scripting

Except for tr, all of the below tools are tiny versions of what you'd usually find in an UNIX system and lack a lot of functionality that enhances interactive use - for example, chmod.com only accepts octal modes instead of friendlier syntax like a+x. While these tools are generally meant to be used by the build process, you are free to use them as a way to avoid inconsistencies with shell scripting utilities across different operating systems.

Path Description
o//third_party/tr/tr.com NetBSD tr: change or delete characters from a text stream
o//examples/seq.com Print number sequences.
o//tool/build/chmod.com Change POSIX file mode bits.
o//tool/build/touch.com Update file modification timestamps or creates files.
o//tool/build/mv.com Move files.
o//tool/build/cp.com Copy files.
o//tool/build/pwd.com Get the current working directory.
o//tool/build/rm.com Delete files.
o//tool/build/dd.com Extract parts of files.
o//tool/build/echo.com Print text to standard output or stderr.
o//tool/build/false.com Return an exit code of 1.
o//tool/build/summy.com Sum integers provided one per line over standard input.
o//tool/build/mkdir.com Create directories.
o//tool/build/printf.com Output strings formatted with printf.
o//examples/nanosleep.com Sleeps for a specified amount of time.
o//tool/decode/base64.com Encodes or decodes Base64 data from standard input.

Binary Analysis

Path Description
o//tool/viz/memzoom.com Interactive live process memory viewer
o//tool/decode/ent.com File entropy calculator
o//tool/decode/elf.com ELF metadata disassembler
o//tool/decode/pe2.com PE metadata disassembler
o//tool/decode/macho.com Apple Mach-O metadata disassembler
o//tool/decode/ar.com UNIX archive metadata disassembler
o//tool/decode/zip.com ZIP archive metadata disassembler
o//tool/viz/bing.com Displays binaries as Unicode glyphs from IBM code page 437
o//tool/viz/fold.com Folds text to a specific number of characters per line
o//tool/decode/x86opinfo.com Decodes a single x86 instruction.
o//tool/viz/unbing.com Reverses bing.com conversion
o//tool/viz/bd.com braille dump: Dumps files or standard input as a hexdump with Braille characters for 0x81 through 0xff

Informational Tools

Path Description
o//examples/printargs.com Prints an overview of the environment.
o//examples/stackexplorer.com Prints the contents of the initial process stack.
o//tool/viz/cpuid.com Decodes CPUID data and prints CPU capabilities. x86 only.
o//tool/viz/printpeb.com Prints information from the Windows Process Environment Block. Windows only.
o//tool/viz/virtualquery.com Prints the Win32 virtual memory layout. Windows only.
o//examples/rlimit.com Prints and changes UNIX system limits.
o//examples/rusage.com Inspects runtime and memory use of a command.
o//examples/getcpucount.com Prints number of CPU cores available on the system.
o//examples/loadavg.com Prints system load average.
o//examples/date.com Prints current ISO 8601 timestamp.
o//tool/viz/maxmind.com Checks IP addresses in MaxMind database (MMDB) files.
o//examples/stat.com File metadata viewer.
o//examples/statfs.com Filesystem metadata viewer.
o//examples/sysconf.com Shows cosmopolitan sysconf values.
o//examples/sysinfo.com Shows system uptime, process count and memory information.
o//examples/uname.com Shows information about the operating system.

System Tools

Path Description
o//examples/reboot.com Performs system reboot.
o//examples/shutdown.com Shuts down the system.
o//tool/build/dropcache.com Clears file system cache. Linux only.

Compression Tools

Path Description
o//third_party/zstd/zstd.com Zstandard compression tool.
o//tool/build/gzip.com Gzip compression tool.
o//third_party/zip/zip.com ZIP archiving tool.
o//third_party/unzip/unzip.com ZIP archive extractor.
o//third_party/zip/zipnote.com Attaches comments to a ZIP archive.
o//third_party/zip/zipcloak.com Encrypts a ZIP archive.
o//third_party/zip/zipsplit.com Splits ZIP archives.
o//third_party/bzip2/bzip2.com Bzip2 compression tool.
o//third_party/bzip2/bzip2recover.com Bzip2 data recovery tool.
o//third_party/lz4cli/lz4cli.com LZ4 compression tool.
o//third_party/smallz4/smallz4.com Optimal LZ4 compression tool.
o//third_party/smallz4/smallz4cat.com Decompresses and reads LZ4 files.
o//third_party/xxhash/xxhsum.com Extremely fast non-cryptographic hash tool.
o//examples/compress.com Compresses data in zlib format.
o//examples/decompress.com Decompresses zlib format data.

Demos

Path Description
o//examples/tls.com Demonstration of thread local storage. Does not write any output.
o//examples/ucontext-sigfpe-recovery.com Demonstration of changing CPU state on signal delivery.
o//examples/vga.com Demonstration of baremetal VGA console text rendering.
o//examples/vga2.com Demonstration of baremetal program crash reporting.
o//examples/vqsort.com Demonstration of very fast array sorting using vectorized quicksort.
o//examples/walk.com Demonstration of directory walking.
o//examples/greenbean.com Massively multi-threaded demonstration web server from scratch

Binary lambda calculus

Path Description
o//tool/lambda/lambda.com Binary Lambda Calculus processor: user-friendly version
o//tool/lambda/tromp.com John Tromp's obfuscated Lambda calculus processor submitted to IOCCC 2012
o//tool/lambda/asc2bin.com Converts ASCII binary to binary data.
o//tool/lambda/blcdump.com Dumps Binary Lambda Calculus as various notations.
o//tool/lambda/bru2bin.com Converts de Bruijn notation to ASCII binary
o//tool/lambda/lam2bin.com Converts lambda notation to ASCII binary

Unclassified

Path Description
o//examples/time.com Measures command execution time. Equivalent of UNIX time command.
o//third_party/python/Parser/asdl_c.com Generates C code from an ASDL description.
o//third_party/python/freeze.com Packages Python code into C.
o//third_party/python/hello.com Prints hello world.
o//third_party/python/pycomp.com Compiles Python code.
o//third_party/python/pystone.com Pystone benchmark program.
o//third_party/python/repl.com python.com with most of the builtin modules removed.
o//third_party/quickjs/unicode_gen.com Generates Unicode tables.
o//tool/build/bigmul.com Cryptographic multiplication kernel generator.
o//tool/build/deltaify.com Prints time difference between incoming input data chunks.
o//tool/build/fastdiff.com Scalable version of the diff tool.
o//tool/build/helpop.com Decodes geek operand notation from ref.x86asm.net.
o//tool/build/lz4toasm.com LZ4 content embedder.
o//tool/build/symtab.com ELF to symbol table file dump tool.
o//tool/build/unbuffer.com Quick and dirty incomplete rewrite of the classic unix unbuffer command. Executes sub-command inside a PTY and pipes its standard i/o. Useful for teasing no-delay i/o out of a program that would otherwise use gigantic buffers.
o//tool/build/unbundle.com Decompresses files in third_party/gcc and prepares them for use in the build.
o//tool/decode/hex.com Converts binary data to hex.
o//tool/decode/unhex.com Hex to binary converter.
o//tool/decode/word.com Displays bytes as a binary word.
o//tool/net/wb.com HTTP(S) benchmark tool
o//tool/viz/ascii2utf8.com Convert ASCII combining markings to Unicode. Meant to be used to transform manpages to Unicode.
o//tool/viz/basicidea.com Print an image to the terminal using the simplest implementation possible
o//tool/viz/bin2asm.com Dumps standard input as a GNU assembler .byte directive
o//tool/viz/dumphexc.com Dumps standard input as a string with hex literals
o//tool/viz/fixconsole.com Resets the Windows console
o//tool/viz/fliphex.com Returns the negative of a number as a signed 32-bit integer in hex
o//tool/viz/fontspace.com Visualizes how much of the Unicode character space is defined by a font
o//tool/viz/generatetortureimage.com Generates a 1920x1080 yellow/blue checkerboard pattern image
o//tool/viz/getglyph.com Print a list of all available Unicode codepoints in a TrueType font, or print a glyph from a font to the terminal.
o//tool/viz/od16.com Print binary as signed 16-bit decimal numbers
o//tool/viz/printdos2errno.com
o//tool/viz/tailf.com Reads a file as it grows, but with a lower poll rate than tail -f.