AgentStack
MCP verified Apache-2.0 Self-run

Ancora

mcp-yasserrmd-ancora · by YASSERRMD

Rust-core agentic framework with durable journal, exactly-once replay, Ed25519 A2A identity, and MCP tool server. Bindings for Go, Python, TypeScript, .NET, and Java via C ABI.

No reviews yet
0 installs
11 views
0.0% view→install

Install

$ agentstack add mcp-yasserrmd-ancora

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Ancora? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

[](https://github.com/YASSERRMD/Ancora/actions/workflows/build.yml) [](https://github.com/YASSERRMD/Ancora/actions/workflows/test.yml) [](https://github.com/YASSERRMD/Ancora/actions/workflows/clippy.yml) [](LICENSE) [](CHANGELOG.md)

Language-agnostic. Local-first. Production-ready.

[Quickstarts](docs/quickstarts/index.md) | [Architecture](docs/spec/architecture.md) | [Guides](docs/guides/) | [Security](docs/security/threat-model.md) | [Changelog](CHANGELOG.md)


What is Ancora?

Ancora is an open-source agentic framework built on a Rust core and exposed to every major language through a stable C ABI. It prioritises correctness, durability, and sovereignty over ease-of-use shortcuts.

| Property | Detail | |----------|--------| | Local-first | Defaults to Ollama / llama.cpp; cloud providers are additive | | Durable by default | Append-only journal with exactly-once replay on crash | | Language-agnostic | One engine, six bindings, zero drift | | Air-gapped capable | Policy engine blocks all egress at the framework layer | | Protocol-native | A2A agent cards, Ed25519 identity, MCP tool server |


Architecture

The framework is structured in five layers:

Language Bindings   Go | Python | TypeScript | .NET | Java
                    ─────────────────────────────────────
C ABI               ancora-ffi  (cdylib + staticlib)
                    ─────────────────────────────────────
Service Crates      ancora-tools  ancora-policy  ancora-grpc
                    ─────────────────────────────────────
Core Engine         ancora-core  (graph, journal, replay)
                    ─────────────────────────────────────
Proto / Storage     ancora-proto  |  SQLite / PostgreSQL

Full diagram: [docs/spec/architecture.md](docs/spec/architecture.md)


Quick start

Pick your language:

Rust

[dependencies]
ancora-core = "0.1"
use ancora_core::runner::run_graph;
let journal = run_graph(&graph, "summarise this article").await?;

Python

pip install ancora
from ancora import Runtime
result = Runtime().run("summarise this article")

TypeScript

npm install @ancora/sdk
import { Runtime } from "@ancora/sdk";
const result = await new Runtime().run("summarise this article");

Go

go get ancora.io/sdk
rt, _ := ancora.NewRuntime()
result, _ := rt.Run("summarise this article")

Full per-language quickstarts: [docs/quickstarts/index.md](docs/quickstarts/index.md)


Crate overview

| Crate | Description | |-------|-------------| | ancora-core | Graph executor, durable journal, replay, chaos tests, benchmarks | | ancora-proto | Protobuf wire spec and JSON mirror for journal events | | ancora-ffi | C ABI surface -- every language binding links this | | ancora-tools | Tool trait, ToolRegistry, MCP server, LangChain adapter | | ancora-policy | Air-gapped egress, data-residency allowlists, PII redaction | | ancora-grpc | A2A agent cards, Ed25519 identity, task lifecycle, handoff |

Language bindings: sdk/go sdk/python sdk/ts sdk/dotnet sdk/java


Durability and replay

Every run is recorded in an append-only journal. On crash and restart the engine reconstructs state from the journal and resumes from the last durable checkpoint -- no duplicated side effects, no lost work.

// The engine skips activities already recorded in the journal.
// Re-run with the same run_id after a crash -- it just works.
let journal = run_graph(&graph, "run-42", input).await?;

Detailed explanation: [docs/guides/durability.md](docs/guides/durability.md)


Security and governance

Ancora ships with a policy engine that enforces governance at the framework layer, not the tool layer.

use ancora_policy::policy::Policy;

// Air-gapped: block all outbound calls unconditionally.
let policy = Policy::new().air_gapped();

// Data residency: only EU endpoints.
let policy = Policy::new().allow_endpoint("https://eu.api.example.com");

Security threat model: [docs/security/threat-model.md](docs/security/threat-model.md)

Governance guide: [docs/guides/governance.md](docs/guides/governance.md)


A2A protocol

Agents expose themselves via a signed agent card at /.well-known/agent.json. Cross-agent task delegation uses Ed25519-verified identity.

let identity = AgentIdentity::generate();
let card = AgentCard { name: "my-agent".into(), ..Default::default() };
let signed = sign_card(&identity, &card);

let client = A2aClient::new("remote-host", 8080);
client.fetch_and_verify_card().await?; // rejects unsigned cards

MCP tool server

Ancora's ToolRegistry is exposed over HTTP JSON-RPC 2.0 with optional bearer-token authentication.

let server = McpServer::new(registry).with_token("s3cr3t");
server.serve("0.0.0.0:3001".parse()?, shutdown_rx).await?;

Running tests

# All Rust tests
cargo test --workspace

# Benchmarks
cargo bench -p ancora-core

# Cross-language conformance
bash test/xlang/run-all.sh

# Chaos and crash tests
cargo test -p ancora-core chaos

Platforms and versions

| Binding | Minimum | |---------|---------| | Rust (MSRV) | 1.75 | | Go | 1.22 | | Python | 3.9 | | TypeScript | Node.js 18 | | .NET | 8.0 | | Java | 17 (LTS) |

Full matrix: [docs/spec/platforms.md](docs/spec/platforms.md)


Documentation

| Guide | Description | |-------|-------------| | [Architecture](docs/spec/architecture.md) | Layers, crates, data flow | | [Quickstarts](docs/quickstarts/index.md) | Code examples for all 6 languages | | [Orchestration](docs/guides/orchestration.md) | Graphs, branching, parallel nodes | | [Memory](docs/guides/memory.md) | Within-run and cross-run state | | [Durability](docs/guides/durability.md) | Crash recovery, exactly-once replay | | [Observability](docs/guides/observability.md) | OpenTelemetry spans, cost tracking | | [Governance](docs/guides/governance.md) | Air-gapped mode, PII, audit | | [Security](docs/security/threat-model.md) | Threat model T1-T6 | | [Benchmarks](docs/benchmarks.md) | Performance methodology and results | | [Migration from LangGraph](docs/migration/from-langgraph.md) | Porting guide | | [Migration from CrewAI](docs/migration/from-crewai.md) | Porting guide |


Changelog

See [CHANGELOG.md](CHANGELOG.md) for the full release history.


Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md) for commit conventions, branch strategy, and the phase-based development process.


License

Apache-2.0. See [LICENSE](LICENSE).


Built by YASSERRMD

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.