Skip to content

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Orion - AI agents on GenLayer

Build, customize, and manage AI agents from a dashboard. Agent directives and allowed actions are registered in a GenLayer AgentRegistry Intelligent Contract, and each run uses GenLayer validator consensus for the approve/reject decision.

  • Create agents from templates or from scratch. Creating an agent registers its directive and allowed action on-chain.
  • Run agents against user input and see the decision, confidence, and reasoning from GenLayer consensus.
  • Execute approved actions on testnets through a connected wallet, or use the optional autonomous testnet wallet mode.
  • Persist agents locally by default, or sync them across devices when Vercel KV is configured.

GenLayer consensus is the default AI path. There is no local mock AI execution path; only the post-approval EVM testnet action can be simulated with TX_MODE=mock.

How it works

You -> Dashboard (Vercel)
  -> Create/edit agent -> GenLayer register_agent/update_agent
  -> Run agent -> POST /api/agents/respond -> GenLayer decide(agent_id, run_id, input)
  -> If approved and action != none -> connected wallet or agent wallet sends a testnet tx

The decide method is public, but it does not accept a caller-supplied directive or action. It loads both from self.agents[agent_id], then re-checks the model result against the stored allowed action before writing the response.

Project layout

app/
  page.tsx                  # dashboard
  api/
    health/route.ts         # runtime mode/config status
    store/route.ts          # agent persistence with optional Vercel KV
    agents/register/route.ts # GenLayer register_agent/update_agent
    agents/respond/route.ts # GenLayer decide
    agents/execute/route.ts # simulated post-approval testnet executor
components/
  Sidebar, Topbar, ConnectWallet
  CreateAgentModal, AgentDetail, agent-ui
lib/
  genlayer.ts               # GenLayer registry + consensus adapter
  genlayer-client.ts        # optional per-user GenLayer signing path
  templates.ts, store.ts, agents-store.ts, kv.ts
  agent-wallet.ts, wagmi.ts, chains.ts, config.ts, types.ts
contracts/
  agent_registry.py         # GenLayer Intelligent Contract
tests/direct/
  test_agent_registry.py    # direct-mode contract tests
AUDIT.md
DEPLOY_GENLAYER.md

Run locally

npm install
npm run dev

Set the GenLayer variables in .env.local, then open http://localhost:3000. Creating an agent registers it in the deployed AgentRegistry; running it submits a GenLayer decide transaction.

Deploy to Vercel

Push the repo, import it at Vercel, and add the GenLayer environment variables before using agent runs in production. Next.js is auto-detected from the root package.json.

Configuration

Variable Purpose Default
GENLAYER_CONTRACT_ADDRESS Deployed AgentRegistry address required
GENLAYER_CHAIN GenLayer chain name testnetAsimov
GENLAYER_PRIVATE_KEY Server signer for registry and decision txs required
NEXT_PUBLIC_GENLAYER_CONTRACT Optional per-user GenLayer signing contract off
NEXT_PUBLIC_GENLAYER_CHAIN Chain for per-user GenLayer signing testnetAsimov
NEXT_PUBLIC_GENLAYER_EXPLORER Explorer base for GenLayer tx links studio explorer
TX_MODE=live Send real testnet transactions from wallet/agent wallet mock
NEXT_PUBLIC_DEFAULT_CHAIN_ID Default EVM testnet 84532
NEXT_PUBLIC_WC_PROJECT_ID WalletConnect project id off
KV_REST_API_URL / KV_REST_API_TOKEN Cloud sync by wallet off
SESSION_SECRET SIWE session cookie signing secret required for sync

See DEPLOY_GENLAYER.md to deploy contracts/agent_registry.py.

Contract and Tests

The contract stores each agent's owner, directive, and allowed action. Owner-gated mutations use gl.vm.UserError, and public decisions use only registered state.

pip install genlayer-test genvm-linter pytest
genvm-lint check contracts/agent_registry.py
pytest tests/direct/ -v

Security model

  • Bounded authority: an agent can only trigger its stored allowed action; anything else is coerced to none.
  • Registry authority: public decide callers cannot provide replacement instructions or actions.
  • Prompt-injection aware: user input is fenced and treated as untrusted data on-chain.
  • Testnet-only custody: autonomous wallets are generated and stored in the browser for testnet use only.

License

MIT

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages