Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions lib/crewai/src/crewai/swiftapi_integration/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
SwiftAPI Integration for CrewAI

Cryptographic attestation for CrewAI tool invocations and crew execution.
Every action requires authorization before execution. No attestation, no execution.

Files:
- config.py: SwiftAPIConfig dataclass
- attestation.py: HTTP client and attestation provider
- tools.py: SwiftAPIStructuredTool wrapping CrewStructuredTool
- crew.py: SwiftAPICrew wrapping Crew for multi-agent attestation
- demo.py: Standalone test against live SwiftAPI

Usage:

from crewai import Crew, Agent, Task
from crewai.swiftapi_integration import SwiftAPICrew

crew = Crew(agents=[...], tasks=[...])
swiftapi_crew = SwiftAPICrew(
crew=crew,
swiftapi_key="swiftapi_live_..." # or set SWIFTAPI_KEY env var
)
result = swiftapi_crew.kickoff(inputs={...})

Or wrap individual tools:

from crewai.swiftapi_integration import SwiftAPIStructuredTool

tool = SwiftAPIStructuredTool(
name="my_tool",
description="Does something",
args_schema=MyArgs,
func=my_func,
swiftapi_key="swiftapi_live_..."
)

Configuration:

SwiftAPIConfig(
api_key="swiftapi_live_...", # required
base_url="https://swiftapi.ai", # default
app_id="crewai", # default
actor="crewai-agent", # default
timeout=10, # seconds
fail_open=False, # NEVER set True in production
verbose=True, # log attestation status
)

Test:

export SWIFTAPI_KEY="swiftapi_live_..."
python demo.py

Get a key: https://getswiftapi.com
74 changes: 74 additions & 0 deletions lib/crewai/src/crewai/swiftapi_integration/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
"""
SwiftAPI Integration for CrewAI

Provides cryptographic attestation for CrewAI tool invocations and crew execution.
Every action is verified against SwiftAPI policies before execution.
No attestation, no execution.

Usage:
# Wrap a crew with attestation
from crewai import Crew, Agent, Task
from crewai.swiftapi_integration import SwiftAPICrew

crew = Crew(agents=[...], tasks=[...])
swiftapi_crew = SwiftAPICrew(
crew=crew,
swiftapi_key="swiftapi_live_..." # or set SWIFTAPI_KEY env var
)
result = swiftapi_crew.kickoff(inputs={...})

# Or wrap individual tools
from crewai.swiftapi_integration import SwiftAPIStructuredTool

tool = SwiftAPIStructuredTool(
name="my_tool",
description="Does something",
args_schema=MyArgs,
func=my_func,
swiftapi_key="swiftapi_live_..."
)

Configuration:
from crewai.swiftapi_integration import SwiftAPIConfig

config = SwiftAPIConfig(
api_key="swiftapi_live_...", # required
base_url="https://swiftapi.ai", # default
app_id="crewai", # default
actor="crewai-agent", # default
timeout=10, # seconds
fail_open=False, # NEVER set True in production
verbose=True, # log attestation status
)

Get a key: https://getswiftapi.com
"""

from .attestation import (
AttestationError,
AttestationProvider,
AttestationResult,
MockAttestationProvider,
PolicyViolationError,
SwiftAPIAttestationProvider,
)
from .config import SwiftAPIConfig
from .crew import SwiftAPICrew
from .tools import SwiftAPIStructuredTool, wrap_tools

__all__ = [
# Config
"SwiftAPIConfig",
# Attestation
"AttestationError",
"AttestationProvider",
"AttestationResult",
"MockAttestationProvider",
"PolicyViolationError",
"SwiftAPIAttestationProvider",
# Tools
"SwiftAPIStructuredTool",
"wrap_tools",
# Crew
"SwiftAPICrew",
]
Loading