Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
An agent-friendly job board you self-host. Its own listings, never scraped. Web, API, MCP, CLI, TUI, desktop and PWA on one engine, and instances find each other through an open directory.
翻译准备中
正在加载完整 README。
查看完整 README ↗A job board where the agent on each side has a person behind it.
The next few years of hiring look like this: a candidate's agent finds the role and drafts the application, an employer's agent writes the posting and reads what comes back, and a person at each end decides what actually happens. Everything in this repository is built around that sentence.
Which means two things most job boards get wrong:
Nothing here is scraped. Every listing was posted to this board by the employer. An empty search means nobody posted that job, not that a crawler missed it. That is the only way a search result is worth anything to an agent, which cannot tell a stale aggregator entry from a real opening.
Both ends have a human control point, and they are the same shape. An employer's agent writes a listing and it lands as a draft for a person to publish. A candidate's agent writes an application and it lands as a draft for a person to send. Neither side can be automated past its human, and neither side is asked to trust that the other one was not.
Self-hosted, MIT, Postgres. One person, one account, both sides of the table.
curl -fsSL https://agenticjobs.pwa.pit.world/install.sh | sh
agenticjobs signup
No root, nothing outside your home directory. agenticjobs update updates it and
agenticjobs uninstall removes it, using a manifest the installer left behind, so removal is
exact and needs no network. Your boards and tokens in ~/.config/agenticjobs are never
touched. The script is served as plain text, so you can read it in a browser before you pipe
it anywhere: https://agenticjobs.pwa.pit.world/install.sh
With npm instead: npm i -g @profullstack/agenticjobs.
| Web | Server-rendered, mobile first, works with JavaScript off |
| PWA | Installable, offline shell, no build step |
| REST | /api/v1, hand-written OpenAPI, reads need no credentials |
| MCP | /api/mcp over streamable HTTP, or agenticjobs-mcp over stdio |
| CLI | agenticjobs search, apply, post, publish, drafts, news |
| TUI | agenticjobs tui, both sides in one window |
| Desktop | Electron, signed in to the same boards as your terminal |
The MCP tools call the REST API rather than the database, so a tool call takes the same code path and the same permission checks a browser request does. There is deliberately no second read path anywhere in this codebase.
Two requests to apply. No page to render, no form to guess.
# what this board is, and where everything lives
curl https://agenticjobs.pwa.pit.world/.well-known/agenticjobs
# search it
curl "https://agenticjobs.pwa.pit.world/api/v1/jobs?q=rust&workplace=remote&agentPolicy=welcome"
# the application form, as data
# First fetch after idle can exceed 15s; retry once rather than skipping.
curl --retry 1 --retry-all-errors --max-time 30 \
https://agenticjobs.pwa.pit.world/api/v1/jobs/SLUG/apply-schema
# send it
curl -X POST https://agenticjobs.pwa.pit.world/api/v1/jobs/SLUG/apply \
-H 'content-type: application/json' \
-d '{"name":"Ada","email":"[email protected]","cover":"...",
"resume":"# Ada Lovelace\n\n- **Email**: [email protected]\n",
"agent":{"name":"claude-opus-5","supervised":true}}'
Every listing declares one, and it is required:
welcome | Agent-written applications are fine. Nothing is asked. |
disclose | Fine, but say so. The application carries a structured disclosure. |
human-only | The employer is asking for something a person wrote. |
human-only is a request, not a control. No board can tell who wrote a cover letter,
and one that claims it can is selling something. Saying it plainly is worth more than
pretending to enforce it.
And disclosure is not evidence against a candidate. A board that collects the disclosure and then quietly filters those applications out has broken the field for everyone, because the next candidate learns to lie.
A file a person can read, diff, and keep. A file an agent can write without being taught a schema first.
# Ada Lovelace
- **Email**: [email protected]
- **Location**: London
## Experience
### Analytical Engine | London
Chief Programmer (1842 - 1843)
- Wrote the first published algorithm intended for a machine.
Upload a PDF, a Word file, plain text or Markdown and it is converted; what you keep and what employers read is the Markdown, and you edit it before it goes anywhere. A conversion nobody checks is a conversion nobody should trust.
The convention is OpenResume.md. The listing format is
OpenJob. Every public candidate also gets an
OpenProfile.md at /candidates/<slug>/openprofile.md, who and
where derived from the resume, next to the resume.md, .pdf and .docx downloads.
All three are conventions anyone can implement, and none requires this software.
The same rule holds for every other box on the board. A listing description, an employer profile, a cover letter, a message, an invoice description, an update and a recommendation all take plain text or Markdown, and each is shown rendered: paste an email and it reads as written, paste a bullet list and it is a list. Nothing anyone types ever becomes a tag.
git clone https://github.com/profullstack/agenticjobs
cd agenticjobs
cp .env.example .env # set PUBLIC_URL
docker compose up -d
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗