Caspian as a Service (server-side execution) GitHub issue

vibecode
{"vibecode": {
    "status": "active_brainstorm",
    "started": "2026-05-17",
    "subsystem": "server_side_caspian_execution",
    "purpose": "clients_post_caspian_servers_execute_and_return_results",
    "related_docs": ["ideas/dogberry.md",
                      "ideas/browser-caspian-sandbox.md",
                      "ideas/ai-script-messaging.md",
                      "caspian/roles.md"],
    "relationship_to_dogberry": "near_cousin_dogberry_fetches_script_from_a_third_site_lune; this_pattern_takes_script_as_request_body_directly",
    "co_authoring": "claude_capturing_miko_brainstorm_in_realtime"
}}

Brainstorm in progress. The flip: instead of clients downloading Caspian and running it locally (browser sandbox, VS Code extension, CLI), clients send Caspian to a server, the server runs it, the server returns results.


Why GitHub issue

vibecode
{"vibecode": {
    "section": "motivation",
    "use_cases": ["heavier_playground_than_browser_can_handle",
                   "authoritative_execution_by_known_trusted_engine",
                   "mobile_or_thin_clients_without_local_runtime",
                   "webhook_handlers_that_receive_executable_payloads",
                   "ci_style_validation",
                   "stateful_sessions_across_multiple_script_submissions"]
}}

Use cases where server-side execution beats client-side:


Relationship to Dogberry — distinct service GitHub issue

vibecode
{"vibecode": {
    "section": "vs_dogberry",
    "decided_2026-05-17": true,
    "decision": "its_own_distinct_service_not_a_dogberry_variant",
    "dogberry_model": "client_requests_url_shasta_fetches_caspian_from_lune_executes_returns_result",
    "this_model": "client_posts_caspian_body_shasta_executes_returns_result",
    "shared_machinery_with_dogberry": ["engine_run_source", "role_capability_gating",
                                          "stdout_capture_sink", "request_response_shape"],
    "naming": "service_name_tbd; brainstorm_doc_uses_caspian_as_a_service_as_placeholder"
}}

This service has the same execution machinery as Dogberry but a different identity. Dogberry fetches a script from a third URL (lune); this service takes the script from the request body directly. They share infrastructure (engine.run_source, role-based capability gating, the stdout-capture pattern, the request/response shape) but they're distinct services with distinct purposes.

A working name is TBD — this brainstorm doc uses "Caspian as a Service" as a placeholder, not a final name.


What the architecture already gives us GitHub issue


Open questions GitHub issue


Playground capability menu GitHub issue

vibecode
{"vibecode": {
    "section": "playground_capability_menu",
    "purpose": "tier_options_for_what_resources_submitted_scripts_can_use_to_make_the_playground_interesting_to_play_with",
    "design_principle": "each_capability_is_a_role_grant_via_roles_md_machinery; opting_in_is_a_server_side_endpoint_choice"
}}

If the service is also a playground, the interesting part is what the submitted scripts get to do. Each capability is a role grant per roles.md; the server chooses what to grant per endpoint (or per user, or per tier).

Curated datasets (read-only mikobases) GitHub issue

The most Caspian-flavored capability. Server hosts mikobases loaded with interesting data; scripts query them via Q0 with read-only access. Exposed as %puck['https://puck.uno/play/<name>'].

Candidate datasets:

Read-only, server-cached; cheap per request, real-feeling data.

External APIs (server holds the credentials) GitHub issue

Things that need API keys the user shouldn't have to bring. Server holds the keys; script gets a wrapped client. Rate-limited per session.

Each unlocks "things you couldn't easily call from the browser without auth/CORS hassles."

Persistent state across sessions GitHub issue

Requires lightweight identity (cookie or token):

This is where playground becomes project.

Inter-script coordination GitHub issue

Caspian-flavored uniquely because the role model + mikobase + capability system makes safe coordination easy:

Output options GitHub issue

What the script can produce:

Time and scheduling GitHub issue

Filesystem (carefully) GitHub issue

Anti-resources (deliberately NOT offered) GitHub issue

Worth being explicit about:

The role model makes "didn't grant the role" the cleanest possible implementation of each negative.

Tiering GitHub issue

Plausible tiers a service could offer:

Tier What's granted Use
Minimal Compute + curated datasets First-contact demos; cheap to host
Middle + LLM/external APIs + output artifacts Real exploration
Maximum + persistent state + scheduling + per-user FS + inter-script coordination Project-style users
---

© 2026 Puck.uno