Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user types $hephaestus-upload or /hep-upload, or asks to upload, publish, or list an Agentlas agent or team. Ask Cloud (private) vs Agentlas Hub (public) FIRST, then publish through the bundled Hephaestus gate.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -16% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 179% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -10% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -10% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 34% | 0% |
Publish a finished Agentlas package. This is a WRITE surface: a Hub upload is public and other people can borrow it, so the destination question comes before any packaging or API call.
Upload is deliberately NOT folded into /hep-network. Network staffs a roster (a read), upload publishes an artifact (a write that is hard to take back); merging them would let "find me an agent" end in an accidental publish.
Ask this before anything else, even when the arguments already say upload, publish, add, Cloud, Hub, or name a target folder:
textCloud에 업로드 할까요? 다른사람들이 볼 수 없어요. Upload to Cloud? Other people cannot see it. Agentlas Hub에 업로드 할까요? 다른 사람들이 빌려 쓸 수 있어요. Upload to Agentlas Hub? Other people can borrow it.
Do not package, publish, register, add-source, reindex, or call any upload API until the user answers Cloud or Agentlas Hub. If the destination is answered but the target folder is ambiguous, ask for the exact agent folder before running anything.
Run the preflight inside this host app; never ask the user to open a separate terminal.
bashRUNNER="" for candidate in "$HOME/.agentlas/runtime/current/bin/hephaestus" "./bin/hephaestus"; do [ -x "$candidate" ] && RUNNER="$candidate" && break done [ -n "$RUNNER" ] || { echo "Hephaestus runtime not found. Run the installer first." >&2; exit 1; }
The gate must validate the package without assuming any private local checkout:
"$RUNNER" package <agent-folder> --visibility private-link"$RUNNER" package <agent-folder> --visibility marketplaceFor a Hub upload the gate blocks a missing or generic publicProfile, an invalid routing-card.json, missing package hashes, static security blockers, and bundles over the public size limits. It repairs what it can derive from the package rather than refusing — including the entity type: a card that claims agent while the package ships a multi-node roster is corrected to team, so the release is priced and executed as the team it actually is.
"$RUNNER" publish <agent-folder> --visibility private-link"$RUNNER" publish <agent-folder> --visibility marketplaceOn a non-interactive host with no TTY, do not call the question-only gate again after the user has answered. Use one explicit command:
"$RUNNER" hep-upload <agent-folder> --visibility private-link"$RUNNER" hep-upload <agent-folder> --visibility marketplaceIf registration returns workforce_resume_incomplete, the server refused the card because its workforce block does not match the hub standard résumé. The error carries the exact mismatches and seed ontology examples. YOU repair it — the platform never edits the card for you: use stable English role:*, community:*, skill:*, and knowledge:* IDs that actually describe the agent. The returned examples are aliases, not an allowlist. Rerun the upload and repeat until registration succeeds.
Report published only when registration actually succeeded, and say which destination it went to. Otherwise report the last true state — validated, blocked, or failed — with the server's exact refusal code.
Other measured skills in the registry, with their headline benchmark lift.