Skip to main content

mongotar (huMONGOus TAR)

Files to prompt, and back.

mongotar logo

Test (Linux, macOS, Windows)

A simple tool for serializing and deserializing files (with permissions and .gitignore exclusion) into a human-readable text file.

Inspired by GNU tar, Go's txtar, and files-to-prompt. mongotar bundles files into a single, human-readable text file. Unlike most "codebase to prompt" tools, it can reliably turn that text file back into files.

To achieve that, and unlike other "plain-text archive" formats, it stores basic user file permissions (rw/rwx) together with the file paths.

mongotar 101

$ mongotar src/ config.txt project.mongotar
  Successfully serialized items to 'project.mongotar'

$ cat project.mongotar
  --- config.txt --- rw
  debug=true

  --- src/main.py --- rw
  print("hello")

$ mongotar -d -f project.mongotar .
  Successfully deserialized 'project.mongotar' to '.'

Why mongotar?

mongotar is at the intersection of two different tool categories:

  1. Dump a repo into one blob for sending to an LLM. This is the space of players such as: Repomix, gitingest, files-to-prompt, and code2prompt. Unlike the first two, mongotar is less "full repo serialization", and has good UX for hand picking which files to serialize. None of them round-trips like mongotar, which can be useful for some LLM workflows (see later).

  2. Plain-text archive formats. This is the space of tools like txtar and shar. mongotar's differentiator here is its simultaneous focus on round-tripping, human-readability, and .gitignore support.

mongotar follows UNIX-philosophy, and deliberately has no LLM-specific features baked in. Those features are to be built on top of this small core (700 LOC).

What motivated mongotar was agentic use cases. Say, a skill composes a problem description and appends relevant files to it without loading them into the agent's context, and sends them to another LLM. If the other LLM hands back a complete set of modified files, it can be deserialized back into the file system (rather than a diff that may not apply cleanly).

Indeed, diff formats are known to be fragile against LLM output, so whole-file output tends to be more reliable.

In short:

Tool Human readable Round-trip Selective files AI-friendly Permissions .gitignore
tar
txtar limited
repo-to-prompt tools generally ❌ varies
mongotar simplified ✅

Some Features

  • Library: Besides CLI, mongotar can be imported and used directly in Python projects.
  • Safe Deserialization: By default, does not overwrite existing files. Use -f/--force to enable overwriting.
  • VCS Exclusion: Version-control directories (.git, .svn, .hg, CVS, ...) are always excluded. Optional -e/--exclude-vcs additionally respects .gitignore files, with git precedence.
  • Pattern Exclusion: --exclude=PATTERN skips paths matching a glob-style pattern, like GNU tar's --exclude.

The default file extension is .mongotar, but any extension can be used. You can even pipe to stdout.

Format

    Free text before the first file header is an optional comment section.

    --- path/to/file.txt --- rw
    This is the content of the first file.
    It can span multiple lines.

    --- path/to/another/script.sh --- rwx
    #!/bin/bash
    echo "Hello from the script!"

    --- empty_file.txt --- rw

    --- path/to/file2.txt --- rw
    Content of the second file.
  • Header format: --- <filepath> --- <permission>
  • Separator: Two newlines (\n\n) separates the content of one file from the header of the next.

Example

Suppose you have a directory structure like this:

my_project/
├── main.py
├── config.txt
└── scripts/
    └── run.sh       (executable)

Running mongotar my_project my_project.mongotar produces:

--- my_project/main.py --- rw
print("hello")

--- my_project/config.txt --- rw
debug=true

--- my_project/scripts/run.sh --- rwx
#!/bin/bash
echo "running"

Running mongotar -d -f my_project.mongotar . recreates the same tree, with run.sh restored as executable.

Installation

git clone https://github.com/sebastiancarlos/mongotar
cd mongotar
uv tool install .

After installation, the mongotar command will be available in your PATH.

Usage (mongotar CLI)

mongotar path/to/file_or_directory [path/to/another ...] output.mongotar

-d/--deserialize: Deserialize an archive back into a directory.

mongotar -d my_project.mongotar output_dir/

-e/--exclude-vcs: makes .gitignore rules apply.

mongotar -e src/ my_project.mongotar

--exclude PATTERN:

mongotar --exclude '*.log' --exclude '*/build' src/ my_project.mongotar

Output to stdout: use - as the output path.

mongotar src/ config.txt - > my_project.mongotar

Limitations

  • Permissions Model: Only user permissions are stored and restored (rw or rwx). Group/other permissions are ignored during serialization and not set during deserialization.
  • Binary Files: Not designed for binary files. Files with non-UTF-8 characters will be skipped.
  • Cross-platform: Windows supported, but everything serializes as rw (Windows has no concept of executable permissions).
  • No symlink support: Symlinks are not supported and will be ignored during serialization (with a warning).
  • Header collision: The archive format has no escaping (matching txtar behavior). Serialization will skip any file whose content contains a line matching the header format (--- path/to/file --- rw), logging a warning (rare case anyway).

Why not just use Repomix/gitingest/etc?

Those tools tend to encompass the entire pipeline of generating a prompt. mongotar's output is meant to be a component you embed inside a message, and which you can turn back into real files.

If you just want to paste your entire repo into ChatGPT once, use Repomix or gitingest. They're better at that.

mongotar's closest relative is files-to-prompt, which shares the simple, "Unix CLI" philosophy. The notable difference is deserialization.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mongotar-0.1.1.tar.gz (59.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mongotar-0.1.1-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

Details for the file mongotar-0.1.1.tar.gz.

File metadata

  • Download URL: mongotar-0.1.1.tar.gz
  • Upload date:
  • Size: 59.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mongotar-0.1.1.tar.gz
Algorithm Hash digest
SHA256 834f1be24116bcf6e0da713907503e8961592f54385e0898ea4776d2eb96e1e8
MD5 48dd5fe8104a3d937e055d10b2de0dcc
BLAKE2b-256 a126bce0c1631ddb0902b92897bd5720a0a49d1ebbfb865a499a6b1856c65bbe

See more details on using hashes here.

File details

Details for the file mongotar-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mongotar-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 12.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mongotar-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 680766f99e1f5ac0ec5d08d320c25c535796faf255a9466f47c3ad5a91402e0b
MD5 aec7478c7249715c29756bffddaae362
BLAKE2b-256 98c3a36a1500841fd9a1b3552edab6ae5c675562534e4e8094d608e73482e52d

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.2

2 files

This release

0.1.1 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page