Layer 01 — Apps

Your company's agent, native everywhere

Not a vendor bot in your channels. Your agent, with your name on it: @acme in Slack, acme-agent on GitHub, acme.adapt.com on the web, a contact in Messages. Threads, mentions, permissions, and OAuth handled for you.

Wander
"Every team at Wander runs on our own agent built on Adapt. It answers guests in Slack, triages issues on GitHub, and texts the on-call when something breaks. One agent, our brand, everywhere we work."
Nathan Potter

Nathan Potter

CTO at Wander

#guest-experience
W

WanderAPP9:02 AM

Cabin 214's guest asked about early check-in. Cleaning wraps at 1:00, so I offered 2:00 and updated the booking.

Wander's own agent · powered by Adapt

The pieces

One agent, wherever you work.

Not screenshots: the actual anatomy of each surface, down to the composer. Click through them; each one is the same agent wearing that tool's native interface.

engineering
Dustin Schau
Dustin Schau
9:12 AM

@Acme can you analyze the queries that resulted in opening a PR, week over week? It feels slower lately and I wonder if it's real or if I'm just asking for more.

One event, one reply

Different positions, one shape.

Each surface plays its own position: Slack catches questions, GitHub ships code, the web holds deep work. Underneath, every one delivers the same normalized event and expects a typed reply, so your agent never learns a webhook quirk.

Normalized events
  • SlackWhere questions get askedslack.mentionpost · reply · card
  • GitHubWhere code gets shippedgithub.issue_commentcomment · PR · review
  • WebWhere deep work livesweb.messageanswer · chart · action
  • MessagesWhere urgency finds youmessages.inboundtext · receipt · link
  • LinearWhere work gets trackedlinear.issue.assignedupdate · comment · PR
  • TeamsSoonWhere enterprise chat livesteams.mentionpost · reply · card

Why one agent

One universal agent. Not five bots.

The point isn't Slack support or GitHub support. It's that they are the same agent: same memory, same permissions, same personality, everywhere your team works.

  • One memoryAsk in Slack, continue on the web, get the ping in Messages. Context follows the work, not the tool.

  • One identity and permission grantGrant access once. Every surface inherits the same scopes, the same roles, the same audit trail.

  • No bot sprawlOne agent replaces the five vendor bots that each know a sliver of your company and share nothing.

  • One place to improveTune a prompt or add a skill once, and every surface gets better in the same deploy.

#eng-oncall
Sean Smith profile picture

Sean Smith2:14 PM

@acme why did signups dip last Tuesday?

Acme logo

AcmeAPP2:19 PM

The 3.4 deploy broke the OAuth callback for six hours. Short version in-thread; full analysis in the workspace.

acme.adapt.com

Tuesday's signup dipcontinued from #eng-oncall

Picking up where we left off: here's the dip by cohort, the fix timeline, and the recovered run-rate.

signup_dip.pngrun_d81f4 · trace

Try it live

One agent: integrated everywhere.

We meet you wherever you work, so you can stay in flow across all of the surfaces where your team gets work done.

bugs
Casey Manos
Casey Manos
10:04 AM

cross-posting from #sales, we're hearing it from customers too. @Acme can you dig in?

Rachel Taylor profile pictureRachel Taylor10:01 AM

two customers on calls this morning hit 401s on their Salesforce sync. anyone else hearing this?

Posted in #sales · Today

Acme logo
AcmeAPP
10:05 AM

On it — pulling this morning's failed syncs and replaying them in a sandbox.

Acme logo
AcmeAPP
10:18 AM

Reproduced it in a sandbox: two runs can refresh the same OAuth token at once, and the loser's token gets revoked. Fix is up as PR #482with a regression test that replays the failing syncs. All checks are green; I'll post here the moment it merges.

PR #482 · fix/token-refresh-race · 12 checks passed

serialize token refresh per connection#482

open

Acme logoAcme opened this from the #bugs thread · 2m ago

integrations/oauth.ts

  • if (token.expiresAt < Date.now()) {
  • - return refreshToken(connection)
  • + return withLock(connection.id, () =>
  • + refreshToken(connection))
  • 12 checks passed
  • sandbox-verified
  • ran in 41s
Messages · +1 (415) 555-0134

did the token fix merge yet?

Merged 14 minutes ago: checks green, canary healthy, 401s back to zero. I posted the all-clear in #bugs and queued re-runs for the 12 syncs that failed.

perfect, kick off the re-runs

Meet your team
where they work.

One agent in Slack, GitHub, the web, and Messages. Live in minutes.