Decentralized Universal Computer

RIshabh2351 pts1 comments

GitHub - Skills03/c9 · GitHub

/" data-turbo-transient="true" />

Skip to content

Search/

Sign in<br>Sign upAppearance settings

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

Skills03

c9

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

master

BranchesTags

Go to file

CodeOpen more actions menu

Latest commit

History<br>2 Commits<br>2 Commits

Folders and files<br>NameNameLast commit message<br>Last commit date<br>cmd/c9

cmd/c9

internal

internal

.gitignore

.gitignore

ARCHITECTURE.md

ARCHITECTURE.md

LICENSE

LICENSE

README.md

README.md

go.mod

go.mod

go.sum

go.sum

View all files

Repository files navigation

c9 — a decentralized universal computer

Every folder is a computer. cd into a folder is the same as cd into a<br>computer; the root is the universal computer. Built on Plan 9 primitives —<br>9P over TLS, per-user namespaces — in Go.

c9 login # one command: agent, registry, namespace, shell

/ # the root: contains all computers<br>/rishabh # a computer (yours)<br>/sanjeev # a computer, appears when it comes online

cd /sanjeev # the moment you are inside someone else's<br># namespace, you are pooling<br>mkdir pool # create a pool<br>cd pool # join it

No join/leave/online commands: presence is ls, join is cd, leave is<br>cd .., pools are mkdir. Everything is a file — /cpu/ctl is a quota,<br>/gpu/0/ctl allocates a GPU on open, /run is the scheduler.

Run a job

team/run/new<br>cat team/run/3/stdout # streams back from wherever it ran<br>cat team/run/3/wait # [done 0]">{ echo 'cmd=python3 train.py'; cat } <> team/run/new<br>cat team/run/3/stdout # streams back from wherever it ran<br>cat team/run/3/wait # [done 0]

Your /ws workspace stages to the node before a job runs and syncs back<br>after — files live in your namespace, machines are pure compute. No<br>transfer step.

Build and run

go build -o c9 ./cmd/c9<br>./c9 login

Requirements: Go 1.21+, and on Windows/macOS you get the built-in shell;<br>on Linux the same tree can also be mounted at / with FUSE<br>(c9 login -fuse /mnt/n9). Linux nodes can run jobs in containers:<br>./c9 login -runtime runc (needs runc and, for images, skopeo).

Bring a machine online

# cleanly takes it offline">c9 ship ssh://user@host # installs, starts, holds the tunnels<br>c9 ship list<br>c9 ship down # cleanly takes it offline

Whatever makes ssh user@host work makes c9 ship work (agent, keys,<br>known_hosts). The linux binary is cached, so ships after the first are<br>instant and don't need Go.

Security model

Transport : 9P over TLS 1.3 everywhere; Ed25519 identities.

Trust : TOFU key pinning — first use auto-trusts, a changed key always<br>fails. echo no > /sanjeev/pin revokes and it sticks.

Capabilities : pool membership is the capability. Joining a pool grants<br>every member access to your machine; leaving revokes it. Owners can grant<br>tokens instead: echo 'token friend@box' > ctl.

Workspace : /ws is private to your identity.

Isolation : Linux jobs run in runc containers with cgroup quotas.

Status

Working prototype. Race-clean test suite; exercised for real against a<br>lightning.ai studio (trained a model in a runc container on the remote,<br>results synced back to the local workspace). Known gaps: FUSE writes are<br>untested, the registry holds pools in memory at scale, and sync-back has<br>no conflict resolution.

See ARCHITECTURE.md for the full design.

MIT licensed.

About<br>No description, website, or topics provided.<br>Resources<br>Readme<br>MIT license<br>Activity<br>Stars<br>0 stars<br>Watchers<br>0 watching<br>Forks<br>0 forks<br>Report repository

Releases

Packages

Contributors

Languages

You can’t perform that action at this time.

computer team pool back files login

Related Articles