agate

x 1.00 · purpose 0.20 · t 5 h · scope 0.60

from 2026-10

API Routing · Docker · Authorization · Logging

Agate is an API router for autonomous agents operating across my own systems. Instead of each agent calling model providers and managing permissions independently, requests pass through one point where routing, cost accounting and audit records can be handled consistently.

requests
4,194
completed
97.0%
recovered reroutes
102

through the gate

Requests from 6 agents cross a policy stage and a router to one of 3 upstreams (share of completions: anthropic 29.9%, openai 35.0%, deepseek 35.1%); the router writes every outcome to the log. Over the week, 4,194 requests: 4,070 completed, 43 were blocked at admission, 102 were rerouted after an upstream error and 81 failed upstream. The figure replays 13 real requests one at a time; the table lists them.

data
requestagenttool checkupstreamlatencyresult
directC—anthropic18.14 sok
directB—openai5.26 sok
directA—deepseek4.10 sok
rerouted after 429Dread: allowedopenai → anthropic11.37 sok
rerouted after 502Broutine write: allowedopenai → anthropic7.29 sok
rerouted after timeoutD—anthropic → openai14.77 sok
tool allowedAread: allowedopenai4.21 sok
tool held for approvalBhigh-impact change: heldanthropic12.16 sok
tool blockedDhigh-impact change: blockedanthropic22.34 sok
blocked at admissionFadmission: blocked—0.01 spolicy denied (403)
upstream 429C—openai0.09 supstream 429 (429)
upstream 502A—deepseek0.40 supstream 502 (502)
upstream timeoutA—openai29.59 stimeout (504)
a request crosses policy, routing and logging on its way out.

A request enters from the left, passes a compact policy stage and follows one thin line toward its selected upstream. Some paths are held or denied before reaching a provider; others reroute after an upstream error. One request at a time is highlighted, while dimmed parallel lines carry the background load.

seven days of traffic

Requests per hour across 7 days, as a heat strip, with request volume, p50 and p95 latency and estimated spend traced beneath it. Requests per day: 702, 383, 388, 620, 710, 671, 720. Busiest hour: fri oct 16 13:00, 57 requests. Week: 4,194 requests, p50 latency 6.7 s, p95 19.9 s, estimated spend $29.33 from configured token pricing (not a bill). Hourly values are in the table.

data
hourrequestsokfailed upstreamblockedreroutedp50 sp95 sspend $
fri oct 16 00:0019181005.318.10.1150
fri oct 16 01:0020182017.322.80.1381
fri oct 16 02:0011110009.521.10.0729
fri oct 16 03:00770015.719.20.0440
fri oct 16 04:00770002.824.20.0104
fri oct 16 05:0010100004.322.30.0397
fri oct 16 06:0027261008.021.70.2225
fri oct 16 07:0023230005.821.10.0757
fri oct 16 08:0049490017.315.80.3482
fri oct 16 09:0037341217.026.30.1789
fri oct 16 10:0037342104.822.00.1956
fri oct 16 11:0039372047.625.40.2779
fri oct 16 12:0036360007.916.90.2780
fri oct 16 13:0057561027.819.30.4418
fri oct 16 14:0033311115.521.10.2126
fri oct 16 15:0050491018.118.30.3418
fri oct 16 16:0036351016.512.80.1352
fri oct 16 17:0038352116.318.70.2021
fri oct 16 18:0034340005.825.60.2438
fri oct 16 19:0037343016.816.70.1970
fri oct 16 20:0033321016.418.70.2554
fri oct 16 21:0025250007.217.40.2005
fri oct 16 22:00161510110.823.30.1357
fri oct 16 23:0021201004.818.80.0885
sat oct 17 00:0010100004.77.20.0473
sat oct 17 01:00550004.48.00.0315
sat oct 17 02:003300010.115.40.0433
sat oct 17 03:00330005.18.50.0047
sat oct 17 04:001090114.117.20.0594
sat oct 17 05:005500014.256.00.0848
sat oct 17 06:0014140006.619.80.0879
sat oct 17 07:0016150105.814.80.0395
sat oct 17 08:0027261016.419.40.2122
sat oct 17 09:0012111007.021.50.0718
sat oct 17 10:0017170009.424.10.2038
sat oct 17 11:0026251016.612.60.1786
sat oct 17 12:0024240006.016.70.1278
sat oct 17 13:0021200116.315.90.0988
sat oct 17 14:0034331015.517.90.2479
sat oct 17 15:0028280008.615.10.3159
sat oct 17 16:0022220017.518.80.1888
sat oct 17 17:0018180008.941.60.2323
sat oct 17 18:0021201004.713.60.1298
sat oct 17 19:0019190015.429.40.1769
sat oct 17 20:0015150004.79.80.0820
sat oct 17 21:0019181005.019.00.1431
sat oct 17 22:00550004.28.40.0296
sat oct 17 23:00990018.517.40.1053
sun oct 18 00:00660003.68.60.0422
sun oct 18 01:006501018.625.50.1280
sun oct 18 02:0010100019.562.70.1514
sun oct 18 03:00990005.816.40.0167
sun oct 18 04:00550007.010.30.0607
sun oct 18 05:0016151008.944.40.1408
sun oct 18 06:0010100005.811.60.0473
sun oct 18 07:001090117.811.90.0317
sun oct 18 08:00550004.637.20.0692
sun oct 18 09:00770008.222.80.0784
sun oct 18 10:0022220006.726.50.1155
sun oct 18 11:0028261125.512.70.1114
sun oct 18 12:0024231016.817.50.1681
sun oct 18 13:0032311007.328.10.2843
sun oct 18 14:0029280107.519.60.1768
sun oct 18 15:0021210006.713.40.0668
sun oct 18 16:0021181207.228.00.1400
sun oct 18 17:0022211004.417.80.1230
sun oct 18 18:0019190006.420.50.1418
sun oct 18 19:0014131017.132.60.0695
sun oct 18 20:0018180004.323.50.1084
sun oct 18 21:0032320017.324.00.2263
sun oct 18 22:00990018.022.60.0706
sun oct 18 23:0013121006.816.20.0769
mon oct 19 00:00330007.08.60.0205
mon oct 19 01:00330009.010.80.0235
mon oct 19 02:00550007.39.00.0071
mon oct 19 03:0013130006.626.30.0684
mon oct 19 04:00880008.720.50.1154
mon oct 19 05:0017170026.931.30.1384
mon oct 19 06:0025250008.614.60.1636
mon oct 19 07:0027270006.227.40.1020
mon oct 19 08:0027270006.017.70.1713
mon oct 19 09:0047442115.517.30.2712
mon oct 19 10:0033330015.719.90.1643
mon oct 19 11:0037342117.015.10.2535
mon oct 19 12:0032320006.120.20.3174
mon oct 19 13:0035331107.318.50.2453
mon oct 19 14:0021201014.816.10.1312
mon oct 19 15:0042420026.419.00.2307
mon oct 19 16:0036351025.618.20.1735
mon oct 19 17:0033311117.524.50.2359
mon oct 19 18:0027251126.117.00.1194
mon oct 19 19:0031291116.025.00.2318
mon oct 19 20:0035341015.017.60.2272
mon oct 19 21:0039381015.123.80.1603
mon oct 19 22:0018171008.615.60.1178
mon oct 19 23:0026251017.115.20.2529
tue oct 20 00:0019181005.121.10.1062
tue oct 20 01:00871006.927.90.0838
tue oct 20 02:0015140106.718.10.1040
tue oct 20 03:0013130017.120.70.0685
tue oct 20 04:0019190007.218.20.1036
tue oct 20 05:0017160104.615.60.0639
tue oct 20 06:0030290107.217.00.1504
tue oct 20 07:0032301124.515.80.1287
tue oct 20 08:0045440116.017.20.4132
tue oct 20 09:0026260007.418.20.3097
tue oct 20 10:0026260007.219.30.2583
tue oct 20 11:0046442036.620.60.4177
tue oct 20 12:0043421014.918.30.3316
tue oct 20 13:0046440206.421.80.3094
tue oct 20 14:0036360008.333.80.4513
tue oct 20 15:0053530006.219.00.4467
tue oct 20 16:0028280006.425.00.3029
tue oct 20 17:0053511127.016.60.3388
tue oct 20 18:0028280007.415.20.3031
tue oct 20 19:0038362006.021.50.1740
tue oct 20 20:0037361028.331.60.3870
tue oct 20 21:0028271018.118.10.1487
tue oct 20 22:0015141006.013.40.1592
tue oct 20 23:00990019.825.70.0780
wed oct 21 00:00880004.628.30.0760
wed oct 21 01:0019190025.319.10.1435
wed oct 21 02:0018180007.332.30.1505
wed oct 21 03:0018180017.824.20.1362
wed oct 21 04:00440002.98.10.0035
wed oct 21 05:0024231017.715.40.1317
wed oct 21 06:00232210010.125.30.2698
wed oct 21 07:0017170007.528.20.1714
wed oct 21 08:0026260017.519.90.2609
wed oct 21 09:0044430126.221.30.3476
wed oct 21 10:0025250035.316.10.1807
wed oct 21 11:0051492005.514.60.3521
wed oct 21 12:0028280019.829.40.2865
wed oct 21 13:0030300007.323.80.2407
wed oct 21 14:0036332107.117.80.1719
wed oct 21 15:0036350126.320.30.2218
wed oct 21 16:0051480318.421.50.2955
wed oct 21 17:0043420116.719.70.2856
wed oct 21 18:0035350007.528.70.2583
wed oct 21 19:0036360006.621.40.3493
wed oct 21 20:0027270016.817.00.1720
wed oct 21 21:0038371017.937.30.3739
wed oct 21 22:0020200016.613.40.1307
wed oct 21 23:0014140006.257.10.1282
thu oct 22 00:0023211107.317.30.2080
thu oct 22 01:0011110014.624.80.0904
thu oct 22 02:0020200016.615.20.1550
thu oct 22 03:0017152007.613.20.0989
thu oct 22 04:00660004.815.50.0395
thu oct 22 05:0012120007.418.60.0562
thu oct 22 06:0031301005.918.60.1224
thu oct 22 07:0026251008.217.90.1805
thu oct 22 08:0041410027.721.00.4058
thu oct 22 09:0019190015.736.00.1182
thu oct 22 10:0040400026.619.80.2274
thu oct 22 11:0046451015.014.70.1631
thu oct 22 12:0040372116.818.30.2110
thu oct 22 13:0028270106.923.00.1843
thu oct 22 14:0039381006.019.90.2999
thu oct 22 15:0036342007.014.50.3064
thu oct 22 16:0055520315.816.60.2799
thu oct 22 17:0040400016.118.10.2502
thu oct 22 18:0043421025.616.00.2768
thu oct 22 19:0031291136.215.60.2094
thu oct 22 20:0041410026.219.50.1658
thu oct 22 21:0031310018.819.90.2647
thu oct 22 22:0026250117.322.20.1724
thu oct 22 23:0018180006.214.50.0809
bursts of work resolve into a measurable daily rhythm.

A narrow heat strip and small time-series traces show changes in request volume, completion status, latency and spend across a week. Selected points open a small record rather than a full administrative dashboard. Cost is an estimate based on configured token pricing, not a billing statement.

what was permitted

Every policy check of the week as an audit mark: 1,084 checks, 843 allowed, 68 held for approval and 173 blocked (43 of them refused at admission, before any upstream call), decided in 7 ms at the median. 102 requests were rerouted to a second upstream: 48 after 429, 35 after 502, 19 after timeout. The table breaks the checks down by category and by day.

data
allowedheldblockedrerouted
read67307
routine write170020
high-impact change06860
secret access0043
model admission0043
all checks84368173102
oct 16144132717
oct 177610128
oct 18826208
oct 19133102117
oct 2015693114
oct 21121113118
oct 2213193120
policy decisions leave a trace before a tool is invoked.

The router also collects authorization results and records why an action proceeded, waited for approval or was blocked: a small procession of audit marks feeding into a stable log column, consistent observability without publishing internal resource names or agent identities.