Metadata-Version: 2.4
Name: ostivane
Version: 0.24.0
Summary: Ostivane: runtime security for AI agents - stops dangerous tool calls before they run, with a signed, tamper-evident audit trail
Author: Ruslan Tiahniienko
License-Expression: Apache-2.0
Keywords: ai-agents,ai-security,agent-security,prompt-injection,llm,mcp,audit,ed25519
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Security
Classifier: Topic :: Security :: Cryptography
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cryptography>=42
Provides-Extra: mcp
Requires-Dist: mcp>=1.2; extra == "mcp"
Provides-Extra: web
Requires-Dist: fastapi>=0.110; extra == "web"
Requires-Dist: uvicorn>=0.27; extra == "web"
Provides-Extra: saml
Requires-Dist: python3-saml>=1.16; extra == "saml"
Provides-Extra: postgres
Requires-Dist: psycopg[binary]>=3.2; extra == "postgres"
Requires-Dist: psycopg-pool>=3.2; extra == "postgres"
Provides-Extra: langchain
Requires-Dist: langchain-core>=0.3; extra == "langchain"
Provides-Extra: llamaindex
Requires-Dist: llama-index-core>=0.12; extra == "llamaindex"
Provides-Extra: openai-agents
Requires-Dist: openai-agents>=0.2; extra == "openai-agents"
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: httpx>=0.27; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: pip-audit; extra == "dev"
Requires-Dist: cyclonedx-bom; extra == "dev"
Dynamic: license-file

# Ostivane

Runtime security for AI agents. Ostivane checks every tool call an agent is about to make, refuses the dangerous ones before
they run (destructive commands, leaked secrets, data sent to drop sites, actions after a prompt injection), lets a person
decide on borderline ones, and keeps a signed, hash-chained record your auditors can verify offline.

```
pip install ostivane                  # SDK, CLI, gateways
pip install "ostivane[web]"           # the hosted cabinet (self-host it)
pip install "ostivane[mcp]"           # MCP gateway and server
```

See it work in a minute, with nothing to sign up for: `ostivane try` walks a demo agent into a prompt injection and shows
which of its next steps are refused, and why. Add `--cloud URL --workspace WS` (and `P7_API_KEY`) to watch it in your cabinet.

```python
from ostivane.recorder import AgentRecorder

rec = AgentRecorder("https://app.example.com", API_KEY, WORKSPACE, agent="support-bot")

@rec.tool("bash", target=lambda cmd: cmd)          # checked before it runs; a refused try is recorded
def bash(cmd): ...
```

No code change: `ostivane soc-llm` (OpenAI, Anthropic, Gemini), `ostivane soc-mcp` / `ostivane soc-mcp-http` (MCP servers),
`ostivane soc-gateway` (HTTP proxy). Clients for TypeScript and Go are in the source repository, which is not public yet.

Import it as `ostivane`. Code written for the earlier `present-day` package keeps working: `import present_day` gives the same modules, and the `present-day` command is still installed.

Licensed under Apache-2.0.
