Skip to main content

FortSignal-secured Deep Agents — cryptographically safe coding agent

Project description

FortSignal DeepAgents

Deep Agents with FortSignal enforcement — every risky tool call cryptographically authorized before execution.

Every risky operation (file write, edit, execute, sub-task) is intercepted and routed through FortSignal's challenge/verify flow — only cryptographically signed intents reach your machine.

License Python PyPI


Verifiable Intent Pilot — Now Open

Running a small, high-touch pilot for teams building real agents. Natural language policies, cryptographically enforced agent behavior, full audit visibility.

👉 Client Guide →
Interested? Contact us or open an issue.


Before you start

  1. API key — Sign up at fortsignal.com/signup → Dashboard → API Keys. Your key starts with fs_live_.
  2. Register your agent — In the dashboard, create an agent and generate an Ed25519 keypair. Download the private key as agent-key.json.
  3. Approve a delegation — In the dashboard, approve a delegation with your passkey. Agent calls return delegation_invalid until this is done.

Install

pip install fortsignal-deepagents

Quick Start

Agent mode (autonomous — Ed25519 signs each challenge automatically):

export FORTSIGNAL_API_KEY="fs_live_..."
export FORTSIGNAL_AGENT_ID="your-agent-id"
export FORTSIGNAL_AGENT_KEY="/path/to/agent-key.json"

fortsignal-deepagents --model "openai:gpt-4o"

Human mode (passkey approval required per risky action):

export FORTSIGNAL_API_KEY="fs_live_..."
export FORTSIGNAL_USER_ID="your-user-id"

fortsignal-deepagents --model "openai:gpt-4o"

One-shot prompt:

fortsignal-deepagents --model "openai:gpt-4o" --message "create hello.py with a greeting"

Agent key file

FORTSIGNAL_AGENT_KEY points to a JSON file with your Ed25519 private key:

{ "privateKey": "<base64url-encoded Ed25519 private key>" }

Generate from the dashboard (recommended), or create it manually:

from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
import base64, json

key = Ed25519PrivateKey.generate()
priv = base64.urlsafe_b64encode(key.private_bytes_raw()).rstrip(b"=").decode()
pub  = base64.urlsafe_b64encode(key.public_key().public_bytes_raw()).rstrip(b"=").decode()

with open("agent-key.json", "w") as f:
    json.dump({"privateKey": priv}, f)

print("Public key to register:", pub)

Register the public key in the dashboard, then approve a delegation before running.


How it works

  1. Agent calls a risky tool → FortSignalMiddleware intercepts it
  2. /challenge/start — challenge bound to exact action + target
  3. Agent signs with Ed25519 (autonomous) or human signs with passkey (human-in-the-loop)
  4. /challenge/verify — only verified intents execute

Risky tools intercepted: write_file, edit_file, execute, task, write_todos

Read-only tools pass through without any verification check.


Python API

from fortsignal_deepagents import create_fortsignal_deep_agent

agent = create_fortsignal_deep_agent(
    model="openai:gpt-4o",
    agent_id="my-agent-id",
    agent_key_path="/path/to/agent-key.json",
)

Or use the middleware directly:

from fortsignal_deepagents import FortSignalMiddleware
from deepagents import create_deep_agent

middleware = FortSignalMiddleware(
    agent_id="my-agent-id",
    agent_key_path="/path/to/agent-key.json",
)
agent = create_deep_agent(model="openai:gpt-4o", middleware=[middleware])

Environment variables

Variable Required Description
FORTSIGNAL_API_KEY Yes Your fs_live_... API key
FORTSIGNAL_AGENT_ID Agent mode Your registered agent ID
FORTSIGNAL_AGENT_KEY Agent mode Path to agent-key.json
FORTSIGNAL_USER_ID Human mode Your userId for passkey approval
FORTSIGNAL_BASE_URL No Override API base (default: https://api.fortsignal.com)
FORTSIGNAL_LOG_LEVEL No Log verbosity (default: WARNING)

Development

git clone https://github.com/fortsignal/fortsignal-deepagents.git
cd fortsignal-deepagents
uv sync
uv run pytest

Full detail → api.fortsignal.com/docs


License
MIT © FortSignal

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fortsignal_deepagents-0.1.6.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fortsignal_deepagents-0.1.6-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

Details for the file fortsignal_deepagents-0.1.6.tar.gz.

File metadata

  • Download URL: fortsignal_deepagents-0.1.6.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for fortsignal_deepagents-0.1.6.tar.gz
Algorithm Hash digest
SHA256 36eae614e479a81eaeef1505d2e99b8c0f08ba2a58150e4d7aab7270a48eb21e
MD5 b67d696fb7a238913310d10b64718fd2
BLAKE2b-256 58adfc7f247d5cc6b0c964758776b07189bc4e91d76c26a688ebda59b25b3903

See more details on using hashes here.

File details

Details for the file fortsignal_deepagents-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for fortsignal_deepagents-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 bc4673b3e47db089eea23df6d20b9a8a2115b0676557bd329d34fee4b7c85078
MD5 e41f5ed15b235ed6a1c9d2e1506192e1
BLAKE2b-256 858ca5bc5e97e2095c530f1356ac8a3d2f82a19ff223bdbf8abb0f7b0dc71559

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page