> For the complete documentation index, see [llms.txt](https://permasigner.itsnebula.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://permasigner.itsnebula.net/contribution/important-files.md).

# Important Files

### The \`permasigner\` directory

The `permasigner` directory is where you're probably going to make changes.

* The `permasigner` module is called by `__main__.py`, and it's where Permasigner's main code is. This is where the script extracts, signs, and packages your apps.
* The `permasigner` module also uses other modules.
  * The `copy` module copies the app's metadata, such as entitlements.
  * The `dpkg` module packages the app into a deb, using dpkg-deb (if available), or constrictor.
  * The `installer` module is responsible for installing the app on your connected, jailbroken iDevice.
  * The `logger` module helps log progress data to console.
  * The `sign` module downloads ldid and uses it to sign the apps.
  * The `tcprelay` module opens a SSH connection of the connected iOS device. They are required for the `installer` module to function.
  * The `utils` module contains miscellaneous functions.
* The `bundled` directory contains other packages we modified.
* The `data` directory contains static files. Most of them are required by the `copier` module.
  * `certificate.p12` is the fake cert that your app is signed with. It was generated with OpenSSL3 from Procursus.
  * The `control` file houses the package's metadata, and is copied later by the `copier` module.
  * The `entitlements.plist` file is a list of entitlements that most apps will need, and is copied later by the `copier` module.
  * The `postinst` and `postrm` files runs uicache after installing/uninstalling. They are also copied later by the `copier` module.
* The `docker/entrypoint.sh` file is a script that handles environment variables for the production Docker container.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://permasigner.itsnebula.net/contribution/important-files.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
