by placet-io
A proactive AI agent for secure, traceable, human-in-the-loop task execution over long-running workflows.
# Add to your Claude Code skills
git clone https://github.com/placet-io/facioPrerequisites: Docker 24+ with Compose v2.
curl -fsSL https://raw.githubusercontent.com/placet-io/facio/main/quickstart/setup.sh | bash
That's it. The script detects your OS, verifies Docker, fetches the public compose file into ./facio/, asks for the initial Placet admin email and password, generates any missing secrets, pulls ghcr.io/placet-io/{placet,facio}:latest, and runs docker compose up -d for you.
Facio starts with one agent by default. If you leave the password blank, setup generates one and prints it at the end together with the Placet URL where the Facio agent is available. Default URL: http://localhost:8080.
Variants:
# Accept all defaults, no prompts
curl -fsSL https://raw.githubusercontent.com/placet-io/facio/main/quickstart/setup.sh | bash -s -- --yes
# Set the initial Placet admin account from the command line
curl -fsSL https://raw.githubusercontent.com/placet-io/facio/main/quickstart/setup.sh | \
bash -s -- --admin-email admin@example.com --admin-password 'change-this-password'
# Connect to an existing Placet instance (asks for URL + API key)
curl -fsSL https://raw.githubusercontent.com/placet-io/facio/main/quickstart/setup.sh | bash -s -- --external
# Connect to an existing Placet instance without prompts
curl -fsSL https://raw.githubusercontent.com/placet-io/facio/main/quickstart/setup.sh | \
bash -s -- --external --yes --placet-url https://placet.example.com --placet-api-key hp_your_key
# Custom target directory under your home directory
curl -fsSL https://raw.githubusercontent.com/placet-io/facio/main/quickstart/setup.sh | FACIO_DIR="$HOME/facio-demo" bash
# Debug a setup run with shell tracing
curl -fsSL https://raw.githubusercontent.com/placet-io/facio/main/quickstart/setup.sh | FACIO_DEBUG=1 bash -s -- --yes
No comments yet. Be the first to share your thoughts!
After install — manage from ./facio/:
cd facio
./facio status # show services
./facio logs facio-1 # tail logs
./facio update # pull images and recreate (Facio + Placet)
./facio scale 3 # run three Facio agents
./facio down # stop
The first agent is named Facio Agent. When you scale, agents use stable internal hostnames (facio-1, facio-2, ...) and human-readable Placet names like Facio Agent (#1), Facio Agent (#2), ... instead of Docker-generated container IDs. Each agent gets its own data dir under ./volumes/facio/<hostname>/ and auto-registers with Placet over the docker network.
Custom overrides (Traefik, external networks, port bindings, hardening, …): setup drops a docker-compose.override.yml.template next to the compose files as a menu of opt-in snippets (Traefik, external mode port binding, dropping SYS_ADMIN on rootless hosts, …). Copy it to docker-compose.override.yml, keep only the sections you need, and run ./facio up. Docker auto-loads docker-compose.override.yml on top of the main docker-compose.yml, so the main file stays untouched. In external mode setup bootstraps a minimal docker-compose.override.yml for you (just the host port binding) when none exists yet — feel free to edit it.
Most agent products still optimize for the wrong moment: a short demo where the model looks autonomous for five minutes and nobody asks what happens after the first risky action, partial failure, or half-finished handoff.
Facio is built for the opposite situation. It stays around, keeps state, asks when it should ask, continues when the boundaries are clear, and leaves behind enough audit and runtime information that both the operator and the agent can understand what happened.
That makes facio useful in the places where normal chat wrappers start to break down: approval-heavy workflows, long-running coordination, personal operator assistance, multi-step execution, and environments where reliability and recoverability matter more than spectacle.
Facio is unrelated to crypto. There is no token, no coin, and no airdrop.
This is the core design decision behind facio: useful autonomy inside explicit boundaries, human authority outside them.
read_logs.Facio is intentionally biased toward Placet. That is not a branding accident. It is a workflow decision.
Placet is the surface in this stack that best matches how facio is supposed to be used:
Other transports still matter and remain supported, but they are secondary when you want the full facio operating model.
docker run --rm -it \
-v ~/.facio:/home/facio/.facio \
ghcr.io/placet-io/facio:latest onboard
Then start the runtime:
docker run -d --name facio \
-v ~/.facio:/home/facio/.facio \
-p 18790:18790 \
ghcr.io/placet-io/facio:latest gateway
git clone https://github.com/placet-io/facio.git
cd facio
uv sync --all-extras
facio onboard
facio agent