Manual 0.8.0

Reach a hosted instance over HTTP with sign-in

Put this instance's endpoint on an address other people reach, behind a sign-in at an issuer you already run. A caller with no token is redirected there and returns with one.

Before you start

Configuration page

  1. Open the configuration page. If it is not open, run revetly config and open the address it prints.

  2. Turn on Advanced settings. Revetly holds every row below behind it, so the section is empty until it is on.

  3. Go to Instance settings > Authentication and approval.

  4. Enter the address people reach in Public address, and the same address in Resource identifier.

  5. Enter your issuer's address in Issuer.

  6. Choose jwt in Token verification method.

  7. Select Save.

    You should see Saved, not applied on those rows.

  8. Wait for the endpoint to come back.

  9. Go to This instance and select Test on the endpoint line.

    You should see Endpoint: answering at https://revetly.example.com/mcp, naming the address you declared in step 4.

Command line

  1. Read what a caller has to present, before anything is declared:

    revetly doctor --offline
    
    [SKIP] caller auth    no [auth] in revetly.toml — `revetly serve` answers stdio and loopback, and refuses any other address
    
  2. In revetly.toml at the project root, declare the address people reach and the issuer that signs them in:

    # revetly.toml
    [served]
    public_url = "https://revetly.example.com/mcp"
    
    [auth]
    issuer   = "https://auth.example.com"
    resource = "https://revetly.example.com/mcp"
    verifier = "jwt"
    

    Revetly refuses any of these unless it is an absolute http or https URL.

  3. Read back what a caller will be checked against:

    revetly doctor --offline
    
    [PASS] caller auth    [auth] issuer https://auth.example.com, resource …
    
  4. Check one real token against this endpoint:

    revetly doctor --token "$TOKEN"
    
    [PASS] token         accepted by <ISSUER>: <PERSON>; grants reach <PROJECT>
    

Troubleshooting

Next steps