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.