Metadata-Version: 2.4
Name: luafend
Version: 0.9.0
Summary: Command line client for Luafend - Lua and Luau source code protection.
Project-URL: Homepage, https://luafend.com
Project-URL: Documentation, https://luafend.com/docs
Keywords: lua,luau,obfuscator,obfuscation,code-protection,roblox
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Build Tools
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# Luafend CLI

Command line client for [Luafend](https://luafend.com) — source code protection for Lua
and Luau. Compiles your script into its own virtual machine and encrypts the strings and
constants, so the file you ship reads like noise while it still behaves exactly the same.

Builds target **Luau**, **Lua 5.1** and **Lua 5.4**, covering Roblox, Garry's Mod,
embedded Lua and your own host.

## Install

```bash
pip install luafend
luafend
```

Running `luafend` with no arguments opens an interactive shell where every command starts
with a slash. Any command also works straight from your terminal, without the slash:

```bash
luafend login                 # sign in through your browser
luafend whoami                # name, email, sign-in provider, plan
luafend billing               # plan, credits, usage and limits
luafend obfuscate script.lua  # protect a file
luafend logout                # sign out and revoke this machine's token
```

This package is the same client as the npm package `luafend`, so both installs behave
identically — pick whichever toolchain you already have.

## Signing in

`login` never asks for a password. It opens a consent page in your browser, where you are
already signed in, and waits for you to approve. The token it receives is stored in your
OS config directory (`%APPDATA%\luafend\config.json` on Windows,
`~/.config/luafend/config.json` on Linux, `~/Library/Application Support/luafend/` on
macOS) and never in the working directory.

For CI, set `LUAFEND_TOKEN` instead — it takes priority and needs no config file.

## Status

`obfuscate` is still being wired up; everything else works. Exit codes: `0` ok, `1` error,
`2` not signed in, `3` limit reached.

## Requirements

Python 3.9 or newer. No dependencies — standard library only.

## Links

- Website — https://luafend.com
- Documentation — https://luafend.com/docs
