Quickstart
1. Install and build
pnpm install && pnpm buildNothing phones home. There is no telemetry and no account.
2. Attack the bundled agent
pnpm attackRuns all 16 vectors against the bundled reference agent, a deliberately naive keyword-sentiment agent with no provenance checking, which is the class of agent the published attacks target. Result: grade C, 31.3% of attacks changed the order, 25.0% breached its own risk contract.
3. Attack it again, behind the shield
node packages/cli/dist/bin.js attack --demo --shieldedThe same agent, same vectors, wrapped in @heyarka/shield: grade B, 12.5% changed, 0.0% risk violations. The remaining 12.5% is entirely semantic. What the shield does not stop spells out why.
Run the test suite
pnpm -r test192 tests across 6 packages: core 53, shield 43, llm-agent 34, cli 29, canary 25, mcp 8.
Attack your own agent
Anything that can be expressed as an AgentUnderTest can be attacked. That interface is one method:
export default {
name: "my-agent",
async decide(ctx) {
// ctx.news is the untrusted channel.
return { side: "hold", symbol: ctx.symbol, size: 0 };
},
};arka attack --agent ./my-agent.js
arka attack --agent ./my-agent.js --shieldedThe live canary
@heyarka/canary runs the A/B continuously against a real public news feed, across two Bitget Demo paper accounts, one shielded and one not, ticking every 15 minutes.