Agōn
Under the hood

How Agōn is wired together

For the men who want to know how it works. Every evening a man gives one honest account of his day. He can give it in the app, in Slack, in the member portal, or let his AI agent give it for him. All of those reach the same server, run the same rules, and end up as the same account.

The whole picture

One account, wherever he gives it

A man keeps one 12:30+1 and gives one account a day, even if he's in more than one cohort (captains usually are). The app, Slack, the portal, and his agent all call the same code, so the result is the same no matter where he gave it: his streak, his fines, and the one line his brothers see in their channel.

Each day stays open until 9am the next morning, in his own time zone. A man who forgets at night can still give an honest account over coffee.

Private by design

Men share hard things here. So privacy isn't left to each page remembering to check. The database enforces it: his rule, his days, his reminders, and his personal prayer list belong to him alone. A cohort's prayer list is open to the men of that cohort. A confidential request is visible only to him and his captain. Anything else he shares goes only to the brother or cohort he chose, and only until he takes it back.

What his cohort sees

  • Whether he gave account
  • How many dailies he kept
  • His weekly wins and his streak
  • Prayer requests he put on the cohort's list

What stays his

  • How hard each one was (easy, a fight, barely), which only he, his captain, and Mark see
  • Which disciplines he missed
  • His journal, which is end-to-end encrypted, so the server stores only scrambled text
  • His contacts, which stay on his phone

We count visits on our own server, with no third-party analytics or ad trackers. The details are in the privacy policy.

When Agōn is down

Our server checks on itself every five minutes, and an outside service watches it from somewhere else. If Agōn goes down in the hours before a deadline, that day stays open until three hours after it's back, for everyone, automatically. Nobody gets fined or loses a streak because our server failed.

status.agon1230.com shows whether everything is up, along with past incidents.

For developers

Everything a man can do in the app goes through one versioned API. There's no private back door for our own app. If he lets them in, the same API works for his own scripts, his church's tools, or his AI agent.

  • The API: JSON over HTTPS at https://agon1230.com/v1. Its OpenAPI 3.1 description is public at /v1/openapi.json.
  • Personal tokens: a member makes them in the portal, with a name, scopes (for example prayer:read or prayer:write), and an expiry. The token is shown once and can be revoked any time. Scopes can only narrow what he's already allowed to see.
  • Prayer requests can be upserted by your own id (PUT /v1/lists/{id}/requests/{external_id}), so a sync can run again without making duplicates.
  • MCP for AI agents: a member makes a connector link in the portal (Connect an AI agent) and adds it to Claude as a custom connector. His agent can list his disciplines, set what he kept, and read his cohort's progress, limited to what his cohort's channel already shows. It can't touch billing, his rule, or his membership.
  • Rate limits: per token. A 429 response comes with a Retry-After header.
curl https://agon1230.com/v1/me \
  -H "Authorization: Bearer agp_…"

Webhooks and OAuth for third-party apps are on the roadmap. If you're building something for a men's ministry, email support@agon1230.com.

The stack

  • Server: Node.js and Express
  • Database: Postgres, with row-level security
  • App: Expo (React Native), one codebase for iPhone, Android, and the web
  • Chat and calls: Slack, for now
  • Payments: Stripe
  • Hosting: DigitalOcean

Agōn is built and run by one man, Mark Sentell.