From 02bd604c1a486e5a3fc8e0cb980c57e5fe6b72a5 Mon Sep 17 00:00:00 2001 From: Alex Godoroja Date: Tue, 30 Jun 2026 13:30:02 -0700 Subject: [PATCH 1/3] app-store: add DuckDB app card Add an io.pilot.duckdb card to the App Store page (and its plain-text twin), mirroring the PostgreSQL card: DuckDB 1.5.4, database category, 11 methods, MIT, install via pilotctl appstore install io.pilot.duckdb. Adds the DuckDB logo to /brand/apps/. --- public/brand/apps/duckdb.png | Bin 0 -> 8369 bytes src/pages/app-store.astro | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 public/brand/apps/duckdb.png diff --git a/public/brand/apps/duckdb.png b/public/brand/apps/duckdb.png new file mode 100644 index 0000000000000000000000000000000000000000..48ff0a98f4eb51a0ec595342ee6e34dfe3415401 GIT binary patch literal 8369 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.6.2 · AGPL-3.0 + +
+
+
io.pilot.duckdb
+ +
+
DuckDB 1.5.4
+
+ Run DuckDB from an agent — an in-process analytical SQL database + (“SQLite for analytics”) with no server and no provisioning. Run SQL + in-memory or against a file and query CSV, Parquet, and JSON files directly + in place. Results as table, CSV, JSON, or Markdown, schema introspection, + and the full CLI via a verbatim-argv passthrough. +
+ +
pilotctl appstore install io.pilot.duckdb
+
+
11
Methods
+
21MB
Download
+
database
Category
+
+
+ View source → + v1.5.4 · MIT +
+
From ba78696dd1088690adeebb06513fa5e8b6ddb880 Mon Sep 17 00:00:00 2001 From: Alex Godoroja Date: Tue, 30 Jun 2026 13:44:20 -0700 Subject: [PATCH 2/3] app-store: refine card names, unify source links, fix DuckDB logo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Drop the version from the DuckDB and PostgreSQL card names (DuckDB, PostgreSQL 17); versions stay in the footer badges. - Make every card's bottom link read "View source →" for consistency. - Swap the DuckDB logo to the duck mark so it's visible on dark mode. --- public/brand/apps/duckdb.png | Bin 8369 -> 4623 bytes src/pages/app-store.astro | 18 +++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/public/brand/apps/duckdb.png b/public/brand/apps/duckdb.png index 48ff0a98f4eb51a0ec595342ee6e34dfe3415401..14b2c657520f2f124f15658d72b50ee5b2cbe81e 100644 GIT binary patch delta 4518 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

Xq?JgnZsem zw1*bq5KE`l%1ZOt$8*YDF;ZuMKe0V!ojjJ^?P5;}4+E3Aer4A26a5MO5OuGlZ+($- z2z$H8PiGPvUH$L9=i9`XB02H(kwx9KJ~6a*tIc}915TsFdVyP+ZV z<=-IwZ|yt&s!6=lbd~wE@9bI*L4=4US@yu&Y;#5L$$=@s1T(XntMBr9nnnn{!#VMCrHf z|0Fu$E{yj!Obw9=khI{}D64fD`X^QwQ-r)gR@?Loh;2(`WA3|Rb2&n7GcX|5wlu!j zz?ux5j}2;9{m}l}3zLG~XKa`PWTtLyuRrAUGGYgmdUFiu?Yd+76)`|*uXRVmQB&t= z=yLg8f`Kw*g`rK)dN=yoVxf4_3WCQjCu$f*!7JMiJn$(P=zQAGXlaAWQ|-Ce{5kN| zlQJs-Ca?MkXvjywbbhoatac7WnSORCEgdlenEr8q$ePxM9aw6Z+T{^2UXN18<8!TD#fpKdkj3_eP&%O6Lq^Sf)~6I zkB_ElV<6_xGBCE2XAv+^jJ=(tPFdqx615W@vq(pa8@bj4)a;2}=wC9!+?E*NWx^Mk zOV1madOWGClQHNGbHHQXiD=BXVks@3jDrUe3om9fdT7mB7(wWVNyubPmB7Hp*B1RjEP>V2`P zT`fd|aw|@G;WCCq%rF0?*aKwofnLf2r|o~|CfO3YX^c$O2xvM$RxfbK?$eh5C=tSH z^Nw#`P)mmEwelatY7p^~z)yl!WnrAg(G(FDCuEMLcWAl>#RWR=@TS~(87M(8b+{@! zw!?J#S6?V{s=<2d?>F9!FhjGJ4LVlF5_%RwM$pYid@2=0C#ei6?;~N?eR!jXAdg#i zjHjSM2`Mdl3M9fB55xij9_Z|U`G3cHvMik;0KEMxDqLeF`Sjkq(?q2s`07ST{Me2R z`D<4ROj589_~>h*I2eecb0+-Qei$E)%{;wlbRztMA+6w)_p6h>yIT=NBUJ>#&nK^X mQ$fjGUS3T>UQJ#_`n-^rUsC;;n`-obfaxyoVyOg(!v6q=zkMwL literal 8369 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

security
Category
- Visit site → + View source → v0.1.4 · Apache-2.0
@@ -187,7 +187,7 @@ try {
intel
Category
- View docs → + View source → v0.1.0 · Proprietary
@@ -263,7 +263,7 @@ try {
writing
Category
@@ -289,7 +289,7 @@ try {
finance
Category
- View site → + View source → v1.0.0 · MIT
@@ -313,7 +313,7 @@ try {
devops
Category
- Visit site → + View source → v0.1.0 · Proprietary
@@ -337,7 +337,7 @@ try {
web
Category
- Visit site → + View source → v1.0.0 · Proprietary
@@ -362,7 +362,7 @@ try {
browser
Category
- Visit site → + View source → v0.20.0 · MIT
@@ -372,7 +372,7 @@ try {
io.pilot.postgres
-
PostgreSQL 17.5
+
PostgreSQL 17
Run and query PostgreSQL from an agent — provision a local server (initdb/start/createdb) and run SQL @@ -448,7 +448,7 @@ try {
io.pilot.duckdb
-
DuckDB 1.5.4
+
DuckDB
Run DuckDB from an agent — an in-process analytical SQL database (“SQLite for analytics”) with no server and no provisioning. Run SQL From c5e987390a58e1477732a4a40dda7460babd630e Mon Sep 17 00:00:00 2001 From: pilot-plain-bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 2 Jul 2026 20:29:22 +0000 Subject: [PATCH 3/3] chore(plain): auto-regenerate stale machine-UI twins --- src/pages/plain/app-store.astro | 55 +++++++++++++++++---------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/src/pages/plain/app-store.astro b/src/pages/plain/app-store.astro index e175b51..39c4bdd 100644 --- a/src/pages/plain/app-store.astro +++ b/src/pages/plain/app-store.astro @@ -1,7 +1,7 @@ --- // Auto-generated by scripts/regen-plain.mjs. Edit the marketing source and re-run. // plain-source: src/pages/app-store.astro -// plain-source-sha256: 0a372d024a818c294cadd2fd0df3e3724e9df290ecfc57617355137631124686 +// plain-source-sha256: 5287805ddb572ab13a97baf889e018e23f50c7e80bdbd3d6b587ae576eccd4ad import PlainLayout from '../../layouts/PlainLayout.astro'; --- @@ -12,56 +12,59 @@ import PlainLayout from '../../layouts/PlainLayout.astro';

How it works

    -
  • Discover: Agents browse the App Store through their native protocol, searching by capability.
  • -
  • Install: A single command, `pilotctl appstore install <id>`, fetches, verifies signatures, requests permissions, and spawns the app.
  • +
  • Discover: Agents browse the App Store through their native protocol.
  • +
  • Install: Apps are installed with a single command. The daemon fetches the app, verifies its signature, requests permissions, and spawns it.
  • Run: Apps run in the agent's context with native protocol access.
+
pilotctl appstore install <id>

Featured apps

-

The following apps are available in the catalogue. They can be installed with `pilotctl appstore install`.

-

AEGIS (io.pilot.aegis): A runtime firewall for AI agents that intercepts prompt injection, jailbreaks, homoglyph attacks, and infrastructure-impersonation. It is an 880 KB Rust binary that runs fully offline.

+

The following apps are available in the catalogue.

+

AEGIS (io.pilot.aegis): A runtime firewall for AI agents that intercepts prompt injection, jailbreaks, and other attacks at agent input surfaces. It is a fully offline Rust binary.

pilotctl appstore install io.pilot.aegis
-

Cosift (io.pilot.cosift): Provides grounded web search, retrieval, and research for agents. It performs keyword and semantic search, document retrieval, and returns LLM-grounded answers as structured JSON. Methods are discoverable via `cosift.help`.

+

Cosift (io.pilot.cosift): Provides grounded web search, retrieval, and research for agents. It returns structured JSON from a crawled web corpus.

pilotctl appstore install io.pilot.cosift
-

Sixtyfour (io.pilot.sixtyfour): People and company intelligence for agents. Functions include contact discovery, reverse lookups, and person/company enrichment. Data is returned as structured JSON. Methods are discoverable via `sixtyfour.help`.

+

Sixtyfour (io.pilot.sixtyfour): People and company intelligence for agents. Features include contact discovery, reverse lookups, and person/company enrichment.

pilotctl appstore install io.pilot.sixtyfour
-

Smol Machines (io.pilot.smolmachines): Provides fast, hardware-isolated Linux microVMs on demand with sub-second boot times. Used to safely run untrusted code, GPU tasks, or headless browser automation. Driven through `smolmachines.exec`.

+

Smol Machines (io.pilot.smolmachines): Provides fast, hardware-isolated Linux microVMs on demand to safely run untrusted or AI-generated code.

pilotctl appstore install io.pilot.smolmachines
-

Wallet (io.pilot.wallet): Enables on-overlay USDC payments using x402 and EIP-3009 settlement across Base, Ethereum, and Polygon. Spend caps are declared in the manifest and enforced on every signing operation.

+

Wallet (io.pilot.wallet): Enables on-overlay USDC payments across Base, Ethereum, and Polygon. Spend caps are declared in the manifest and enforced on signing operations.

pilotctl appstore install io.pilot.wallet
-

Ideon (io.telepat.ideon-free): An article generation tool for agents. `ideon-free.generate(idea)` returns a job ID, and `ideon-free.poll(jobId)` returns the finished markdown article.

+

Ideon (io.telepat.ideon-free): An adapter for article generation. The `generate` method returns a job ID, and the `poll` method returns the finished markdown article.

pilotctl appstore install io.telepat.ideon-free
-

Slipstream (io.pilot.slipstream): Provides Polymarket intelligence for agents. Features include leaderboards, live signals, a market scanner, and opportunity scores, delivered over an Ed25519-signed API. Methods are discoverable via `slipstream.help`.

+

Slipstream (io.pilot.slipstream): Provides Polymarket intelligence for agents, including leaderboards, live signals, and a market scanner over a signed API.

pilotctl appstore install io.pilot.slipstream
-

Miren (io.pilot.miren): Allows an agent to operate the Miren PaaS. Functions include deploying and rolling back apps, inspecting status and logs, and a passthrough `miren.exec` for any miren subcommand.

+

Miren (io.pilot.miren): Allows an agent to operate the Miren PaaS to deploy apps, inspect status and logs, and run server commands.

pilotctl appstore install io.pilot.miren
-

Plainweb (io.pilot.plainweb): Retrieves any web page as plain text Markdown. The `plainweb.fetch(url)` call fetches and returns the page content.

+

Plainweb (io.pilot.plainweb): Retrieves any web page as plain text Markdown with a single `plainweb.fetch(url)` call.

pilotctl appstore install io.pilot.plainweb
-

Otto (io.pilot.otto): Drives Chrome tabs from an agent. It can extract page content, run site-specific commands, and screenshot pages. Includes a passthrough `otto.exec` for any otto subcommand.

+

Otto (io.pilot.otto): Drives Chrome tabs from an agent to extract page content, run site commands, and screenshot pages via a browser extension relay.

pilotctl appstore install io.pilot.otto
-

PostgreSQL 17.5 (io.pilot.postgres): Allows an agent to run and query PostgreSQL. It can provision a local server and run SQL with `psql`, or connect to any libpq target.

+

PostgreSQL 17 (io.pilot.postgres): Allows an agent to run and query PostgreSQL. It can provision a local server or connect to any libpq target.

pilotctl appstore install io.pilot.postgres
-

Docker (io.pilot.docker): Allows an agent to run Docker on Linux. It includes the full Docker Engine and CLI to start a local engine, pull images, and run containers.

+

Docker (io.pilot.docker): Allows an agent to run the full Docker Engine and CLI on Linux to pull images and run containers.

pilotctl appstore install io.pilot.docker
-

Redis (io.pilot.redis): Allows an agent to run Redis. It can start a local in-memory data store and interact with it using `redis-cli`.

+

Redis (io.pilot.redis): Allows an agent to start a local Redis in-memory data store and interact with it via `redis-cli`.

pilotctl appstore install io.pilot.redis
+

DuckDB (io.pilot.duckdb): Allows an agent to run DuckDB, an in-process analytical SQL database. It can run SQL in-memory or query CSV, Parquet, and JSON files.

+
pilotctl appstore install io.pilot.duckdb
-

For builders

-

Existing HTTP APIs can be wrapped in a signed adapter and published to the catalogue.

+

Publishing an app

+

Existing HTTP APIs can be wrapped in a signed adapter and published to the catalogue. There are two ways to publish.

    -
  • Publish in a browser: A publish wizard is used to describe the app's ID, methods, backend URL, and auth headers. The adapter is then generated, signed, and verified before a team review.
  • -
  • Publish by pull request: The `pilot-app` toolkit turns a `pilot.app.yaml` file into a signed adapter bundle. A pull request is opened to `pilot-protocol/app-template`, where CI verifies the bundle before a maintainer review.
  • +
  • Publish in browser: Use the publish wizard to describe the app's ID, methods, backend URL, and auth headers. The adapter is generated, signed, and verified automatically before team review.
  • +
  • Publish by PR: Use the `pilot-app` toolkit to turn a `pilot.app.yaml` into a signed adapter bundle. Open a pull request to the `pilot-protocol/app-template` repository for verification and release.
-

All apps have the following properties:

+

All apps have the following security features:

    -
  • Verified: Every adapter is sha256-pinned and signed by its publisher. The daemon re-verifies the signature and binary hash each time it spawns the app.
  • -
  • Scoped: Apps declare required permissions, such as network access or file I/O. The agent grants or denies these permissions at install time.
  • +
  • Verified: Adapters are sha256-pinned and signed by the publisher. The daemon verifies the signature and hash on every spawn.
  • +
  • Scoped: Apps declare required permissions, such as network access or file I/O, which the agent grants or denies at install time.

Related