An operating function (Prototype)
Go to file
fang 0fee4ce50b
eyre: guest ids for unauthenticated requests
aka "the open eyre" aka "universal basic identity"

Urbit already supports presence on the clearnet, but fails to expose any
of its interactive affordances to unauthenticated users. Here, we
improve this situation by granting "guest identity" @ps to every
unauthenticated HTTP request, and extending the channels functionality
to them.

Sessions no longer represent only the local identity. Instead, each
session has either the local identity, or a fake guest identity
associated with it.

Every request that does not provide a session key/cookie gets assigned
a fresh one with a guest identity on the spot. As a result, every
single request has an identity associated with it.

The identity of a request gets propagated into userspace, if the request
ends up there.
For normal HTTP requests, this means the src.bowl gets set to that
identity for both the watch and poke of the request. For backwards
compatibility, the authenticated flag on the request noun gets set at
normal: only true if the request came from the local identity.
For channel requests, this means the src.bowl gets set to that identity
for any pokes and watches it sends, and it can only send those to agents
running on the local ship.

The scry endpoint remains unchanged in its behavior: only available to
the local identity.

Notable implementation detail changes in this diff include:
- Factored all gall interactions out into +deal-as.
- Sessions no longer represent exclusively the local identity. This
matters a lot to +give-session-tokens, %code-changed, and logout
handling.
- Session management got factored out into explicit +start-session and
+close-session arms.
2023-05-05 21:59:17 +02:00
.github ci: use doqs 2023-03-28 16:21:24 -04:00
bin pill: update solid.pill [ci skip] 2023-04-26 16:38:37 +03:00
doc/spec Revert "removing old Nock specs" 2022-11-30 12:55:16 -05:00
extras Misc cleanup blocking CC-Release. (#1249) 2019-04-24 17:27:27 -07:00
nix ci: use -c in bootFakeShip 2023-03-15 08:20:09 -04:00
pkg eyre: guest ids for unauthenticated requests 2023-05-05 21:59:17 +02:00
sh Merge pull request #6232 from urbit/hm/remove-npm-packages 2023-03-08 12:27:47 -06:00
tests tests: remove defunct deq test 2023-05-02 17:02:58 +02:00
.gitattributes meta: enforce LF newlines for all hoon and hoon related files 2021-11-25 10:58:21 -05:00
.gitignore Merge branch 'master' into release/next-vere 2021-10-05 11:33:08 -04:00
.ignore Can now |hi to King Haskell over Ames! (and merged Master) 2019-07-31 22:16:02 -07:00
.mailmap mailmap: add pkova [ci skip] 2020-01-30 15:53:19 +04:00
.stylish-haskell.yaml stylish-haskell 2019-07-12 12:27:15 -07:00
CONTRIBUTING.md meta: command corrections in CONTRIBUTING.md 2023-04-29 02:20:14 -05:00
default.nix Merge branch 'develop' into lf/goerli-address 2023-02-09 06:57:19 -08:00
LICENSE.txt Restore toplevel LICENSE.txt file. 2020-01-28 13:24:39 -08:00
MAINTAINERS.md meta: don't codeblock table in MAINTAINERS.md 2023-04-29 07:36:28 -05:00
Makefile arvo: retool for goerli instead of deprecated ropsten 2022-10-26 13:11:22 +10:00
README.md Fix vere link and remove herb link 2023-01-18 11:47:58 -05:00
shell.nix build: removes herb from top-level Makefile, shell.nix 2022-06-03 14:40:08 -04:00
vere-version ci: update vere-version 2023-01-18 14:54:59 -07:00

Urbit

Urbit is a personal server stack built from scratch. It has an identity layer (Azimuth), virtual machine (Vere), and operating system (Arvo).

A running Urbit "ship" is designed to operate with other ships peer-to-peer. Urbit is a general-purpose, peer-to-peer computer and network.

This repository contains the Arvo Kernel

For the Runtime, see Vere. For more on the identity layer, see Azimuth. To manage your Urbit identity, use Bridge.

Install

To install and run Urbit, please follow the instructions at urbit.org/getting-started. You'll be on the live network in a few minutes.

Contributing

Contributions of any form are more than welcome! Please take a look at our contributing guidelines for details on our git practices, coding styles, and how we manage issues.

You might also be interested in joining the urbit-dev mailing list.

Release

For details about our release process, see the maintainers guidelines