Skip to content
publik.
Browse appsAppsPricingSupport buildersSupport
+Publish a repoPublish
Browse appsHow it worksPublish a repoSupport buildersGet helpPricingDevelopersGitHubPrivacy
© 2026 Publik
All apps/Franco/Install/macOS

How to install Franco on Mac

Franco does what Apollo.io does, and Apollo.io costs Paid. This guide gets you the free one.

What you end up with

Franco running in your browser, on your own computer. It is free, and it stays free — there is no account, no trial and no subscription at the end of this.

Time
About 71 minutes
Steps
35
Cost
Free

Read this first

Assembled from the submission questionnaire with zero model calls. No founder has reviewed this guide yet.

Before you start

These are one-time installs. If you have used Terminal before, you may have them already — the first step checks.

  1. 1

    Install Git

    Apple opens a small installer.

    Type this into Terminal, then press Return.

    xcode-select --install

    You know this worked when: Git responds with a version number

  2. 2

    Install Node LTS

    Choose the macOS Installer (.pkg).

    Open download ↗

    You know this worked when: Node responds with a version number

Install Franco

  1. 3

    Open Terminal

    Keep it open beside this page.

    You know this worked when: Terminal is open

  2. 4

    Check Git and Node

    Git and the current Node LTS are required.

    Type this into Terminal, then press Return.

    git --version
    node --version

    You know this worked when: Git and Node respond with version numbers

  3. 5

    Install uv

    Needs Python already installed.

    Type this into Terminal, then press Return.

    python3 -m pip install --user uv

    You know this worked when: uv responds with a version number

  4. 6

    Install Python

    Choose the macOS installer (.pkg), then reopen Terminal.

    Open download ↗

    You know this worked when: python3 --version prints a version

  5. 7

    Copy Franco to this Mac

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~
    if [ ! -d franco/.git ]; then
    git clone https://github.com/GortexAI/franco.git
    fi

    You know this worked when: A franco folder appears

  6. 8

    Open the Franco folder

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~
    cd franco

    You know this worked when: Your terminal prompt is inside the franco folder

  7. 9

    Use the reviewed version

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    git checkout dd22f6c5cc328c8c3473dbaf628c14df215bae42

    You know this worked when: Git reports the reviewed commit

  8. 10

    Install dependencies

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    uv venv && uv pip install -r requirements.txt && uv run python -m playwright install chromium

    You know this worked when: The command finishes without an error

  9. 11

    Get a GMAIL_CLIENT_SECRET key

    Sign in, create a key, and copy it.

    Open the page ↗

    You know this worked when: You have a key on your clipboard

  10. 12

    Copy the env file

    Then open .env and set GMAIL_CLIENT_SECRET.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    cp .env.example .env

    You know this worked when: .env has GMAIL_CLIENT_SECRET set

  11. 13

    Get a SMTP_PASSWORD key

    Sign in, create a key, and copy it.

    Open the page ↗

    You know this worked when: You have a key on your clipboard

  12. 14

    Copy the env file

    Then open .env and set SMTP_PASSWORD.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    cp .env.example .env

    You know this worked when: .env has SMTP_PASSWORD set

  13. 15

    Get a IMAP_PASSWORD key

    Sign in, create a key, and copy it.

    Open the page ↗

    You know this worked when: You have a key on your clipboard

  14. 16

    Copy the env file

    Then open .env and set IMAP_PASSWORD.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    cp .env.example .env

    You know this worked when: .env has IMAP_PASSWORD set

  15. 17

    Get a INSTANTLY_API_KEY key

    Sign in, create a key, and copy it.

    Open the page ↗

    You know this worked when: You have a key on your clipboard

  16. 18

    Copy the env file

    Then open .env and set INSTANTLY_API_KEY.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    cp .env.example .env

    You know this worked when: .env has INSTANTLY_API_KEY set

  17. 19

    Get a LINKEDIN_PASSWORD key

    Sign in, create a key, and copy it.

    Open the page ↗

    You know this worked when: You have a key on your clipboard

  18. 20

    Copy the env file

    Then open .env and set LINKEDIN_PASSWORD.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    cp .env.example .env

    You know this worked when: .env has LINKEDIN_PASSWORD set

  19. 21

    Get a CLOUDFLARE_API_TOKEN key

    Sign in, create a key, and copy it.

    Open the page ↗

    You know this worked when: You have a key on your clipboard

  20. 22

    Copy the env file

    Then open .env and set CLOUDFLARE_API_TOKEN.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    cp .env.example .env

    You know this worked when: .env has CLOUDFLARE_API_TOKEN set

  21. 23

    Get a REOON_API_KEY key

    Sign in, create a key, and copy it.

    Open the page ↗

    You know this worked when: You have a key on your clipboard

  22. 24

    Copy the env file

    Then open .env and set REOON_API_KEY.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    cp .env.example .env

    You know this worked when: .env has REOON_API_KEY set

  23. 25

    Get a ZEROBOUNCE_API_KEY key

    Sign in, create a key, and copy it.

    Open the page ↗

    You know this worked when: You have a key on your clipboard

  24. 26

    Copy the env file

    Then open .env and set ZEROBOUNCE_API_KEY.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    cp .env.example .env

    You know this worked when: .env has ZEROBOUNCE_API_KEY set

  25. 27

    Get a HUNTER_API_KEY key

    Sign in, create a key, and copy it.

    Open the page ↗

    You know this worked when: You have a key on your clipboard

  26. 28

    Copy the env file

    Then open .env and set HUNTER_API_KEY.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    cp .env.example .env

    You know this worked when: .env has HUNTER_API_KEY set

  27. 29

    Get a DATAFORSEO_PASSWORD key

    Sign in, create a key, and copy it.

    Open the page ↗

    You know this worked when: You have a key on your clipboard

  28. 30

    Copy the env file

    Then open .env and set DATAFORSEO_PASSWORD.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    cp .env.example .env

    You know this worked when: .env has DATAFORSEO_PASSWORD set

  29. 31

    Get a SERPER_API_KEY key

    Sign in, create a key, and copy it.

    Open the page ↗

    You know this worked when: You have a key on your clipboard

  30. 32

    Copy the env file

    Then open .env and set SERPER_API_KEY.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    cp .env.example .env

    You know this worked when: .env has SERPER_API_KEY set

  31. 33

    Run Franco

    Keep Terminal open.

    Type this into Terminal, then press Return. The first line moves you into the folder this step runs in, so it works in a window you have just opened.

    cd ~/franco
    uv run franco dashboard

    You know this worked when: localhost:5555 responds

  32. 34

    Open it in your browser

    If a different port was picked, open that one instead.

    Open localhost:5555 ↗

    You know this worked when: The app loads in the browser

  33. 35

    Try it

    Franco should be open in your browser.

    You know this worked when: Franco works

If something goes wrong

Nothing here can damage your computer, and every step can be run again safely. If a command fails, the usual cause is the step before it not having finished.

Still stuck? Tell us what happened and we will fix the guide. Include the step number and we can usually reproduce it.

Have a different setup?

  • How to install Franco on Windows →

This guide follows GortexAI/franco at the reviewed version dd22f6c. Pinning the version is why the commands here keep working after the project changes.

Back to Franco →